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
来获取任何正确的字段