Javascript mongodb中如何将数组转换为字符串

Javascript mongodb中如何将数组转换为字符串,javascript,node.js,mongodb,aggregation-framework,Javascript,Node.js,Mongodb,Aggregation Framework,我有下面的模式 { id: 123, values:[ {valueId: "12444", name: "asd"}, {valueId: "555", name: "www"}, ] } 我想将其转换为(将名称合并为单个字符串) 我尝试了下面的聚合,它将所有名称值放在一个数组中 $project: { attributes: { "$map":

我有下面的模式

{
 id: 123,
 values:[
   {valueId: "12444", name: "asd"},
   {valueId: "555", name: "www"},
 ]
}
我想将其转换为(将
名称
合并为单个字符串)

我尝试了下面的聚合,它将所有名称值放在一个数组中

$project: {
      attributes: {
        "$map": {
          "input": "$attributes",
          "as": "attr",
          "in": {
            "id": "$$attr.id",
            "values": "$$attr.values.name"
          }
        }
      }
    },
这使得它成为

{
 id: 123,
 values:[
     "asd",
     "www"
   ]
}
我希望将值设置为单字符串值,如
“asd,www”
“asdwww”
您需要的值,而不是
$map

db.collection.aggregate([
    {
        $project: {
            _id: 1,
            values: {
                $reduce: {
                    input: "$values",
                    initialValue: "",
                    in: { $concat: [ "$$value", "$$this.name" ] }
                }
            }
        }
    }
])

下面是一个演示如何处理分隔符的示例

db.collection.aggregate([
    {
        $project: {
            _id: 1,
            values: {
                $reduce: {
                    input: "$values",
                    initialValue: "",
                    in: { $concat: [ "$$value", "$$this.name" ] }
                }
            }
        }
    }
])