【发布时间】:2014-07-27 06:20:06
【问题描述】:
需要一个查询来获取最新文档 - MongoDB
我有一个这样的 MongoDB 集合,
db.file_info.find()
{ "_id" : A, "fileID" : 0, "size" : 126, "version" : 1}
{ "_id" : B, "fileID" : 1, "size" : 126, "version" : 1}
{ "_id" : C, "fileID" : 2, "size" : 121, "version" : 1}
{ "_id" : D, "fileID" : 1, "size" : 124, "version" : 2}
{ "_id" : E, "fileID" : 3, "size" : 125, "version" : 2}
{ "_id" : F, "fileID" : 2, "size" : 120, "version" : 3}
{ "_id" : G, "fileID" : 4, "size" : 122, "version" : 3}
我要查询fileID的最新版本,按版本排序。
我需要这样的结果,
{ "_id" : G, "fileID" : 4, "size" : 122, "version" : 3}
{ "_id" : E, "fileID" : 3, "size" : 125, "version" : 2}
{ "_id" : F, "fileID" : 2, "size" : 120, "version" : 3}
{ "_id" : D, "fileID" : 1, "size" : 124, "version" : 2}
{ "_id" : A, "fileID" : 0, "size" : 126, "version" : 1}
我找不到给出上述结果的查询。目前我们正在通过这种方式克服这个问题:
db.file_info.find({"version":{$lte:3}}).sort({"version":1});
它将按顺序列出所有低于版本3的文档。然后我们正在处理内存中的结果集并获取最新版本。 但这对于更大的集合是不可扩展的。如果我们可以将其作为单个查询执行,那对我的项目会更好。
【问题讨论】:
标签: mongodb