MongoDB,为集合中的每个 user_id 返回最近的文档

Pec*_*eck 5 mapreduce mongodb

寻找与 Postgres 的 Distinct On 类似的功能。

有一组文档 {user_id, current_status, date},其中状态只是文本,日期是日期。仍处于将我的头围绕 mongo 并了解做事的最佳方式的早期阶段。

mapreduce 会是这里最好的解决方案,map 发出所有信息,reduce 保留最新的记录,还是有一个内置的解决方案而不拉出先生?

Gat*_* VP 0

有一个distinct命令,但我不确定这是否是您需要的。Distinct 是一种“查询”命令,对于大量用户,您可能希望非实时汇总数据。

Map-Reduce 可能是一种方法。

地图阶段:key只是一个 ID。你的value会像下面这样{current_status:'blah',date:1234}

减少阶段:给定一个值数组,您将获取最新的值并仅返回它。

为了使这项工作达到最佳效果,您可能需要查看 1.8.0 中的一项新功能。“重新减少”功能。将允许您仅处理新数据,而不是重新处理整个状态集合。

另一种方法是构建一个“最新”集合并将状态插入绑定到该集合。因此,当您为用户插入新状态时,您会更新他们的“最新”状态。

根据此功能的重要性,您可以同时执行这两件事。