我正在尝试在 mongoDB 中找出这个 map/reduce 系统。我的收藏中有以下基本架构/布局。
{
_id: 1,
name: n1,
website: w1,
tags: [
myTag1,
myTag3
]
}
{
_id: 2,
name: n2,
website: w2,
tags: [
myTag2,
myTag3
]
}
{
_id: 3,
name: n3,
website: w3,
tags: [
myTag2,
myTag4
]
}
如何检索一组唯一标签?我希望将其退还给我以供进一步使用。
{
tags: [
myTag1,
myTag2,
myTag3,
myTag4
]
}
顺便说一句,这就是我想出的,但它只返回每个项目的 _id 和标签,而不是将标签组合成一个对象。
var map = function() {emit( this._id,{tags: this.tags});};
var reduce = function(key, values) {
var t = [];
values.forEach(function(doc) {
var tags = doc.tags;
tags.forEach(function(tag) {
if (!(tag in t)) {
t.push(tag);
}
});
});
return {tags: t};
};
var op = db.businesses.mapReduce(map, reduce, {out: "mr_results"});
db[op.result].find();