MongoDB查找具有不同字段的项目

时间:2017-02-22 21:51:09

标签: mongodb

我希望根据以下架构获取我的收藏中的特定条目。

它与objectClass排序的version相同,以获得最新和过滤,然后只获取最新的objectId(注意:这不是商品ID! !)

我已经尝试了一些与distinct和group的组合,但是没有得到它

集(历史):

{ "_id" : ObjectId("AAA"), "objectId" : ObjectId("BBB"), "objectClass" : "AAA\BBB\CCC", "version" : NumberInt("1"), "fields" : {...} }
{ "_id" : ObjectId("AAB"), "objectId" : ObjectId("BBB"), "objectClass" : "AAA\BBB\CCC", "version" : NumberInt("2"), "fields" : {...} }
{ "_id" : ObjectId("AAC"), "objectId" : ObjectId("BBB"), "objectClass" : "AAA\BBB\CCC", "version" : NumberInt("3"), "fields" : {...} }
{ "_id" : ObjectId("AAD"), "objectId" : ObjectId("BBA"), "objectClass" : "AAA\BBB\CCC", "version" : NumberInt("1"), "fields" : {...} }
{ "_id" : ObjectId("AAE"), "objectId" : ObjectId("BBA"), "objectClass" : "AAA\BBB\CCC", "version" : NumberInt("2"), "fields" : {...} }
{ "_id" : ObjectId("AAF"), "objectId" : ObjectId("BBA"), "objectClass" : "AAA\BBB\CCC", "version" : NumberInt("3"), "fields" : {...} }

我当前的陈述(不是预期的结果):

db.history.find({objectClass: "AAA\BBB\CCC"}).sort({version: -1});

预期结果:

[
    { "_id" : ObjectId("AAC"), "objectId" : ObjectId("BBB"), "objectClass" : "AAA\BBB\CCC", "version" : NumberInt("3"), "fields" : {...} }
    { "_id" : ObjectId("AAF"), "objectId" : ObjectId("BBA"), "objectClass" : "AAA\BBB\CCC", "version" : NumberInt("3"), "fields" : {...} }
]

1 个答案:

答案 0 :(得分:1)

我认为你想在几次调用中使用聚合和管道。以下是我没有测试的查询,但应该给你一个好主意。首先对文档进行排序,然后按objectClass进行分组,只获取其他字段的第一个值,最后将数据投影回原始格式。

'Επιστολή εκπαιδευτικο.docx'