我有一个MongoDB集合。其中,每个文档都有一个项目ID,一个时间字段以及大量其他字段。重复商品ID。我想针对每个不同的项目ID从此集合中的最后一个文档中提取所有数据。一种有效的方法如下:
db.items.aggregate({
$sort: {time: -1}}, {
$group: {
_id: {item: '$item.id'},
time: {$first: '$time'},
anotherField: {$first: '$anotherField'},
yetAnotherField: {$first: '$yetAnotherField'},
...
}
})
...但是,我需要为要提取的文档中的每个字段添加一个表达式,这很笨拙。是否有一个查询能够像上述方法一样高效(或更优)地完成此任务,但更优雅地完成此任务?
您可以用来$$ROOT
在中引用整个文档$group
。
因此,要获取每个组的最新(即最后一个)文档,您可以执行以下操作:
db.items.aggregate({
$sort: {time: -1}}, {
$group: {
_id: {item: '$item.id'},
lastDoc: {$first: '$$ROOT'}
}
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句