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

时间:2015-03-23 19:21:58

标签: 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分组,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}
]

1 个答案:

答案 0 :(得分:1)

解决了它:

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