【发布时间】:2025-12-29 15:45:06
【问题描述】:
我有一个具有这种结构的集合:
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
}
什么是正确的函数和参数?
谢谢
【问题讨论】:
-
Mongo 的 map-reduce 会将最终输出存储在一个集合中(在本例中为
sub_id集合)。您是否考虑过改用聚合管道? -
db.mycollection.distinct('attribute.sub_id') -
这条管道看起来如何?
标签: mongodb mongodb-query aggregation-framework