【问题标题】:MongoDb aggregation $lookup and $projectMongoDb 聚合 $lookup 和 $project
【发布时间】:2020-12-28 19:36:16
【问题描述】:

我刚刚遇到了一个有趣的聚合管道问题。因为我是新手,所以我尝试了随机的东西,但没有得到想要的输出。希望大家帮我解决!

我有两个收藏,

集合 a=>

{
    _id: 1,
    field1: "value1",
    field2: "value2
}

集合 b=>

{
    _id: 101,
    collectionAId: 1,
    status: "active"
},
{
    _id: 102,
    collectionAId: 1,
    status: "inactive"
},
{
    _id: 102,
    collectionAId: 1,
    status: "expired"
}

我的目标是得到

{
    _id: 1,
    field1: "value1",
    field2: "value2,
    status: ["active", "inactive", "expired"]
}

【问题讨论】:

    标签: mongodb aggregation-framework aggregation


    【解决方案1】:

    您可以使用$map 结合$project 来实现:

    db.a.aggregate([
      {
        "$lookup": {
          "from": "b",
          "localField": "_id",
          "foreignField": "collectionAId",
          "as": "output"
        }
      },
      {
        "$project": {
          field1: 1,
          field2: 1,
          status: {
            "$map": {
              "input": "$output",
              "as": "v",
              "in": "$$v.status"
            }
          }
        }
      }
    ])
    

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 2020-08-07
      • 2019-11-08
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 2019-01-29
      相关资源
      最近更新 更多