假设我想要进行聚合,这会让我获得一组用户,其中每个用户都是使用其名称插入的最新文档。例如,如果我这样做:
db.users.insert({name: 'Bob', _id: 1})
db.users.insert({name: 'Jim', _id: 2})
db.users.insert({name: 'Bob', _id: 3})
我想回来
[
{name: 'Jim', _id: 2},
{name: 'Bob', _id: 3}
]
这很简单 - 只需name
分组,id
为{$max: '$_id'}
。但是,我说我引入了一个phoneNumber
字段,我还要检索“Jim”和“Bob”的phoneNumber
。如何检索此字段以使其与正确的ID匹配?例如:
db.users.insert({name: 'Bob', phone: '555-1234', _id: 1})
db.users.insert({name: 'Jim', phone: '555-5678', _id: 2})
db.users.insert({name: 'Bob', phone: '555-9101', _id: 3})
我想回来
[
{name: 'Jim', phone: '555-5678', _id: 2},
{name: 'Bob', phone: '555-9101', _id: 3}
]
答案 0 :(得分:1)
解决了它:
如果您添加{$sort: {_id: -1}}
,则可以在聚合中使用$first
来获取任何正确的字段。