我有一个具有以下结构的集合:
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
}
什么是正确的函数和参数?
谢谢
答案 0 :(得分:0)
您可以在此处使用聚合
db.collection.aggregate([
{ "$project": {
"sub_id": {
"$reduce": {
"input": "$attribute",
"initialValue": "",
"in": { "$concat": ["$$this.sub_id", ",", "$$value"] }
}
}
}}
])