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" ] }
}
}
}
}
])