Я пытаюсь выяснить эту карту/уменьшить систему в mongoDB. У меня есть следующая базовая схема/макет в моей коллекции.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();
Это приводит к '[ \t [ мойтег1, MyTag3 ], \t [ myTag2, MyTag3 ], \t [ myTag2, myTag4 ] ] ' мне нужно '[ \t [ мойтег1, myTag2, \t \t MyTag3, \t \t myTag4 ] ]' – Brandon
Хм, странно. Я опубликовал обновление с примером из оболочки mongo, возможно, это помогает. – Matt
Это ОЧЕНЬ странно, мой не делает то, что показывает этот пример вообще – Brandon