Myslím, že rozumím tomu, na co se ptáte. Odpověď je docela přímočará pomocí Map/Reduce.
Řekněme, že máte následující dokumenty osob:
{
"name": "Person A",
"interests" [ "computers", "fishing", "sports" ]
}
{
"name": "Person B",
"interests" [ "computers", "gaming" ]
}
{
"name": "Person C",
"interests" [ "hiking", "sports" ]
}
{
"name": "Person D",
"interests" [ "gaming" ]
}
Pravděpodobně budete chtít vydat svůj klíč jako úrok s hodnotou jako jméno osoby (nebo _id
).
function (doc) {
for (var x = 0, len = doc.interests.length; x < len; x++) {
emit(doc.interests[x], doc..name);
}
}
Vaše výsledky zobrazení budou vypadat takto:
- počítače => Osoba A
- počítače => Osoba B
- rybaření => Osoba A
- hraní => Osoba B
- hraní => Osoba D
- turistika => osoba C
- sport => Osoba A
- sport => Osoba C
Chcete-li získat seznam lidí, kteří mají zájem o počítače, stačí odeslat key="computers"
jako součást řetězce dotazu.
Pokud chcete do mapy přidat funkci zmenšení, můžete jednoduše použít _count
(zkratka pro použití zkompilované funkce snížení) a můžete získat počet všech lidí s konkrétním zájmem, můžete to dokonce použít k omezení zájmů, na které se ptáte, abyste budovali své vztahy.