【问题标题】:Mongoose aggregate merge data in one collection after lookup to one object查找一个对象后,Mongoose 在一个集合中聚合合并数据
【发布时间】:2021-10-23 21:34:59
【问题描述】:

我有一个包含类似数据的集合 A

{
 id: 2,
 name: "test"
},
{
 id: 4,
 name: "test4"
}

我有第二个集合 B,其中包含如下数据:

{
 id: 444,
 name: "a",
 colA_id: 2
},
{
 id: 555,
 name: "b",
 colA_id: 2
},
{
 id: 555,
 name: "c",
 colA_id: 10
},

在我聚合两个集合后,我想要如下输出:

{
 id: 2,
 name: "test",
 list_of_b: {
   {
     id: 444,
     name: "a",
     colA_id: 2
   },
   {
    id: 555,
    name: "b",
    colA_id: 2
   },
  }
}

我试图合并它们,但每次我只得到数据库的一条记录。

【问题讨论】:

    标签: node.js mongodb mongoose aggregate


    【解决方案1】:

    这只是一个简单的查找

    数据库是

    db={
      "collA": [
        {
          id: 2,
          name: "test"
        },
        {
          id: 4,
          name: "test4"
        }
      ],
      "collB": [
        {
          id: 444,
          name: "a",
          colA_id: 2
        },
        {
          id: 555,
          name: "b",
          colA_id: 2
        },
        {
          id: 555,
          name: "c",
          colA_id: 10
        }
      ]
    }
    

    聚合是

    db.collA.aggregate([
      {
        "$lookup": {
          "from": "collB",
          "localField": "id",
          "foreignField": "colA_id",
          "as": "list_of_b"
        }
      }
    ])
    

    工作Mongo playground

    【讨论】:

    • 嘿。谢谢!没有放松,然后是比赛和项目,它也对我有用。但不知何故,在其他步骤之后,它只显示一条记录。
    • 哦!我刚刚删除了 unwind 并且它起作用了。我的错。谢谢!!
    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 2020-06-06
    • 2020-09-10
    • 2020-01-31
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多