如何在mongodb中使用group by?

玛诺·吉迪亚

我想用逗号分隔值。那么如何在聚合框架中使用group / concat?

文件联络人

{
  "_id" : "9c612c95054fb46e3de8dee8",
  "name" : "name1",
  "oppID" : [
        "5c612c95054fb46e3de8bcc5",
        "5bd6b334cba7d2241a3ba9d9"
       ]
},
{
  "_id" : "1c612c95054fb46e3de8dcde9",
  "name" : "name2",
  "oppID" : [
        "5c612c95054fb46e3de8bcc5",
        "5bd6b334cba7d2241a3ba9d9"
       ]
}

文件机会

{
  "_id" : "5c612c95054fb46e3de8bcc5",
  "name" : "opp name 01",
},
{
  "_id" : "5bd6b334cba7d2241a3ba9d9",
  "name" : "opp name 02",
},

我想获得如下的联系人列表,

{
   "_id" : "9c612c95054fb46e3de8dee8",
   "oppName" : "opp name 01, opp name 02"
},
{
   "_id" : "1c612c95054fb46e3de8dcde9",
   "oppName" : "opp name 01, opp name 02"
}
米克尔

您需要运行$ lookup来从两个集合中获取数据,然后使用$ reduce$ concat来将数组转换为单个字符串

db.contact.aggregate([        
    {
        $lookup: {
            from: "opportunity",
            localField: "oppID",
            foreignField: "_id",
            as: "opportunities"
        }
    },
    {
        $project: {
            _id: 1,
            oppName: {
                $reduce: {
                    input: "$opportunities",
                    initialValue: "",
                    in: {
                        $cond: [ { $eq: [ "$$value", "" ] }, "$$this.name", { $concat: [ "$$value", ", ", "$$this.name" ] } ]
                    }
                }
            }
        }
    }
])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章