我的收藏中的许多文件之一如下:
{ "_id" :123,
"a" :[
{ "_id" : 1,
"dt" : ISODate("2013-06-10T19:38:42Z")
},
{ "_id" : 2,
"dt" : ISODate("2013-02-10T19:38:42Z")
}
],
"b" :[
{ "_id" : 1,
"dt" : ISODate("2013-02-10T19:38:42Z")
},
{ "_id" : 2,
"dt" : ISODate("2013-23-10T19:38:42Z")
}
],
"c" :[
{ "_id" : 1,
"dt" : ISODate("2013-03-10T19:38:42Z")
},
{ "_id" : 2,
"dt" : ISODate("2013-13-10T19:38:42Z")
}
]
}
我想找到整个文档的最大日期(a,b,c)。
我现在的解决方案是,我遍历所有根_id
然后在每个$match
,a
,b
的聚合框架中执行c
根文件。这听起来非常低效,有什么更好的想法吗?
答案 0 :(得分:0)
您的问题与this question非常相似。看看这个。
与该解决方案一样,您可以使用MongoDB的聚合框架处理您的问题,使用$project
和$cond
运算符重复展平文档,同时在每一步保留最大值。