Disons que vous avez les trois documents suivants.
Bob:
{
"_id": "89d9ffe10a33df504ecc8d7c9a975eed",
"_rev": "1-dfc3128d8d80760f2cf40328dd24553e",
"type": "user",
"name": "Bob"
}
Peter:
{
"_id": "89d9ffe10a33df504ecc8d7c9a98a0c6",
"_rev": "1-820e231c44f9b3125db79e0c00bbc050",
"type": "user",
"name": "Peter"
}
Un autre Bob:
{
"_id": "89d9ffe10a33df504ecc8d7c9a99f360",
"_rev": "1-dfc3128d8d80760f2cf40328dd24553e",
"type": "user",
"name": "Bob"
}
Vous voulez trouver des documents en double avec name
valeurs. Il suffit de créer une vue sur le terrain name
avec la fonction de carte suivante:
function (doc) {
if (doc.type == "user") {
emit(doc.name);
}
}
Utilisez le construit en fonction _count
réduire. Si vous interrogez ce point de vue avec reduce=false
, vous obtiendrez les résultats suivants:
{
total_rows: 3,
offset: 0,
rows: [
{
id: "89d9ffe10a33df504ecc8d7c9a975eed",
key: "Bob",
value: null
},
{
id: "89d9ffe10a33df504ecc8d7c9a99f360",
key: "Bob",
value: null
},
{
id: "89d9ffe10a33df504ecc8d7c9a98a0c6",
key: "Peter",
value: null
}
]
}
Comme ces résultats sont rassemblés (triés) par name
, en double name
valeurs seront adjacentes dans les résultats.
Vous pouvez également interroger ce point de vue avec group=true
et vous obtiendrez les résultats suivants:
{
rows: [
{
key: "Bob",
value: 2
},
{
key: "Peter",
value: 1
}
]
}
Tout résultat avec un value
de 2
ou plus indique qu'il ya des doublons. Après avoir identifié qu'il ya des entrées en double pour la clé de "Bob"
, vous pouvez interroger pour tous les "Bob"
s en utilisant reduce=false&key="Bob"
, qui vous donnera les résultats suivants:
{
total_rows: 3,
offset: 1,
rows: [
{
id: "89d9ffe10a33df504ecc8d7c9a975eed",
key: "Bob",
value: null
},
{
id: "89d9ffe10a33df504ecc8d7c9a99f360",
key: "Bob",
value: null
}
]
}