【问题标题】:Mongodb aggregation: get field value using accumulator of another field on the same documentMongodb聚合:使用同一文档上另一个字段的累加器获取字段值
【发布时间】:2017-01-13 20:01:06
【问题描述】:

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

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}
]

【问题讨论】:

    标签: mongodb aggregation-framework


    【解决方案1】:

    解决了:

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

    【讨论】:

      猜你喜欢
      • 2023-02-11
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      相关资源
      最近更新 更多