mongodb - 如何找到集合中每个id的最新版本文档?

时间:2014-12-04 15:53:49

标签: mongodb

我有一个包含以下文档的集合:

{ id: 1, version: 1 }, { id: 1, version:2 }, { id: 2, version: 1 }

是否可以构造一个查询,为每个id获取最大版本的文档,以便查询返回此内容?

[{ id: 1, version: 2}, { id: 1, version: 1 }]

1 个答案:

答案 0 :(得分:1)

是的,但请注意警告:

db.coll.aggregate({ $group : { _id : "$groupId", version : { $max : "$version"} } } );

我冒昧地将id重命名为groupId,因为我发现id(非关键,不是唯一)和_id(PK)令人恼火

买者

从组中查找最大项是一个有点复杂的问题,因为它需要在组内进行分组和排序 - 虽然可以使用聚合框架,但建议在大型集合上避免这种类型的读取大量查询。

保留对最新版本的引用可能是一个更好的主意,例如引入groups集合并在其中保留currentVersion(或对当前版本文档的直接_id引用)。必须在插入时更新,但使查询更容易。