Jak znaleźć duplikaty w mongodb
Aby znaleźć dokumenty ze zduplikowanymi wartościami w MongoDB, możesz użyć następującej składni:
db.collection.aggregate([ {" $group ": { "_id": " $field1 ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
Oto, co robi ta składnia:
- Zgrupuj wszystkie dokumenty o tej samej wartości w polu 1
- Dopasuj grupy, które mają więcej niż jeden dokument
- Wyświetlaj wszystkie grupy, które mają więcej niż jeden dokument
To konkretne zapytanie szuka zduplikowanych wartości w kolumnie pole1 . Po prostu edytuj tę wartość, aby zmienić pole wyszukiwania.
Poniższy przykład pokazuje, jak używać tej składni w przypadku zespołu zbierającego z następującymi dokumentami:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Rockets ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
Przykład: Znajdź dokumenty ze zduplikowanymi wartościami
Możemy użyć poniższego kodu, aby znaleźć wszystkie zduplikowane wartości w kolumnie „zespół”:
db.teams.aggregate([ {" $group ": { "_id": " $team ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
To zapytanie zwraca następujące wyniki:
{ name: 'Rockets' } { name: 'Mavs' }
To mówi nam, że wartości „Rakiety” i „Mavs” pojawiają się wielokrotnie w polu „zespół”.
Zauważ, że możemy po prostu zastąpić $team $position , aby zamiast tego szukać zduplikowanych wartości w polu „position”:
db.teams.aggregate([ {" $group ": { "_id": " $position ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
To zapytanie zwraca następujące wyniki:
{ name: 'Guard' }
To mówi nam, że „Straż” pojawia się kilka razy w polu „Pozycja”.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:
MongoDB: Jak dodać nowe pole do kolekcji
MongoDB: Jak grupować i liczyć
MongoDB: Jak grupować według wielu pól