Saya pikir saya mengerti apa yang Anda tanyakan. Jawabannya cukup mudah dengan Map/Reduce.
Katakanlah Anda memiliki dokumen orang berikut:
{
"name": "Person A",
"interests" [ "computers", "fishing", "sports" ]
}
{
"name": "Person B",
"interests" [ "computers", "gaming" ]
}
{
"name": "Person C",
"interests" [ "hiking", "sports" ]
}
{
"name": "Person D",
"interests" [ "gaming" ]
}
Anda mungkin ingin memancarkan kunci Anda sebagai minat, dengan nilai sebagai nama orang tersebut (atau _id
).
function (doc) {
for (var x = 0, len = doc.interests.length; x < len; x++) {
emit(doc.interests[x], doc..name);
}
}
Hasil tampilan Anda akan terlihat seperti ini:
- komputer => Orang A
- komputer => Orang B
- memancing => Orang A
- game => Orang B
- game => Orang D
- hiking => Orang C
- olahraga => Orang A
- olahraga => Orang C
Untuk mendapatkan daftar orang yang tertarik dengan komputer, Anda cukup mengirim key="computers"
sebagai bagian dari string kueri.
Jika Anda ingin menambahkan fungsi pengurangan ke peta Anda, Anda cukup menggunakan _count
(jalan pintas untuk menggunakan fungsi pengurangan yang dikompilasi) dan Anda dapat mengambil jumlah semua orang dengan minat tertentu, Anda bahkan dapat menggunakannya untuk membatasi minat yang Anda kueri untuk membangun hubungan Anda.