如何获取文档数组属性的外观的串联列表?

时间:2019-07-02 20:23:52

标签: mongodb mongodb-query aggregation-framework

我有一个具有以下结构的集合:

db.mycollection.find({_id: 1})
{
  _id: 1,
  attribute: [
    {
      sub_id: abc,
    },
    {
      sub_id: djxk,
    }
  ]
}

我现在想要的是一个连接字符串,用逗号分隔,并在集合的所有文档上用所有sub_id分隔。 {sub_id: "abc, djxk"}

我尝试过的事情:

db.mycollection.mapReduce( function() { emit("mycollections", this._id); }, function(key, values) { return values.join(", ")}, {out: "sub_ids"})

但结果与预期不符:

{
    "result" : "sub_ids",
    "timeMillis" : 652,
    "counts" : {
            "input" : 3837,
            "emit" : 3837,
            "reduce" : 40,
            "output" : 1
    },
    "ok" : 1
} 

什么是正确的函数和参数?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以在此处使用聚合

db.collection.aggregate([
  { "$project": {
    "sub_id": {
      "$reduce": {
        "input": "$attribute",
        "initialValue": "",
        "in": { "$concat": ["$$this.sub_id", ",", "$$value"] }
      }
    }
  }}
])

MongoPlayground