J'essaie de comprendre cette carte/réduire le système dans mongoDB. J'ai le schéma/la disposition de base suivant dans ma collection.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
]
}
Comment puis-je récupérer un tableau de balises uniques? Je voudrais que cela me soit retourné pour un usage ultérieur.
{
tags: [
myTag1,
myTag2,
myTag3,
myTag4
]
}
D'ailleurs ce que je suis venu avec, mais il renvoie simplement le _id et les balises de chaque élément au lieu de combiner les balises en un seul objet.
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();
Cela se traduit par '[ \t [ myTag1, myTag3 ], \t [ myTag2, myTag3 ], \t [ myTag2, myTag4 ] ] ' J'ai besoin '[ \t [ myTag1, myTag2, \t \t myTag3, \t \t myTag4 ] ]' – Brandon
Hmm, étrange. J'ai posté une mise à jour avec un exemple du shell mongo, peut-être que ça aide. – Matt
C'est très étrange, le mien ne fait pas ce que montre cet exemple – Brandon