Mongodb聚合:使用同一文档上另一个字段的累加器获取字段值

Mongodb聚合:使用同一文档上另一个字段的累加器获取字段值,mongodb,aggregation-framework,Mongodb,Aggregation Framework,假设我想做一个聚合,得到一组用户,其中每个用户都是插入其名称的最新文档。例如,如果我这样做了: 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: 'Jim', p

假设我想做一个聚合,得到一组用户,其中每个用户都是插入其名称的最新文档。例如,如果我这样做了:

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: 'Jim', phone: '555-5678', _id: 2},
    {name: 'Bob', phone: '555-9101', _id: 3}
]
这很简单-只需按
name
分组,并将
id
作为
{$max:'$\u 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', _id: 2},
    {name: 'Bob', _id: 3}
]
[
    {name: 'Jim', phone: '555-5678', _id: 2},
    {name: 'Bob', phone: '555-9101', _id: 3}
]
解决它:

如果添加
{$sort:{u id:-1}}
,则可以在聚合中使用
$first
来获取任何正确的字段