我希望根据以下架构获取我的收藏中的特定条目。
它与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" : {...} }
]
答案 0 :(得分:1)
我认为你想在几次调用中使用聚合和管道。以下是我没有测试的查询,但应该给你一个好主意。首先对文档进行排序,然后按objectClass进行分组,只获取其他字段的第一个值,最后将数据投影回原始格式。
'Επιστολή εκπαιδευτικο.docx'