私はmongoDBのこのmap/reduceシステムを理解しようとしています。私は私のコレクションに次の基本的なスキーマ/レイアウトを持っています。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
]
}
これは私が出ているものですが、それはだけではなく、1つのオブジェクトにタグを組み合わせることで、各項目の_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();
になり、 '[ \t [ myTag1、 myTag3 ]、 \t [ myTag2、 myTag3 ]、 \t [ myTag2、 myTag4 ] ] ' 私は '[ \t [ myTag1、 myTag2、 \t \t myTag3、 \t \t myTag4 ] ]奇妙な' – Brandon
うーんを、必要とします。 mongoシェルの例を使ってアップデートを投稿しました。これはおそらく役に立ちます。 – Matt
それは非常に奇妙です、私の例では何も表示されません – Brandon