So finden sie duplikate in mongodb
Sie können die folgende Syntax verwenden, um Dokumente mit doppelten Werten in MongoDB zu finden:
db.collection.aggregate([ {" $group ": { "_id": " $field1 ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
Folgendes bewirkt diese Syntax:
- Gruppieren Sie alle Dokumente mit demselben Wert in Feld 1
- Ordnen Sie Gruppen zu, die mehr als ein Dokument enthalten
- Projizieren Sie alle Gruppen, die mehr als ein Dokument haben
Diese spezielle Abfrage sucht nach doppelten Werten in der Spalte field1 . Bearbeiten Sie einfach diesen Wert, um das Feld zu ändern, in dem gesucht werden soll.
Das folgende Beispiel zeigt, wie diese Syntax mit einem Sammlungsteam mit den folgenden Dokumenten verwendet wird:
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 })
Beispiel: Dokumente mit doppelten Werten finden
Wir können den folgenden Code verwenden, um alle doppelten Werte in der Spalte „Team“ zu finden:
db.teams.aggregate([ {" $group ": { "_id": " $team ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
Diese Abfrage gibt die folgenden Ergebnisse zurück:
{ name: 'Rockets' } { name: 'Mavs' }
Dies verrät uns, dass die Werte „Rockets“ und „Mavs“ mehrfach im Feld „Team“ vorkommen.
Beachten Sie, dass wir einfach $team durch $position ersetzen können, um stattdessen im Feld „Position“ nach doppelten Werten zu suchen:
db.teams.aggregate([ {" $group ": { "_id": " $position ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
Diese Abfrage gibt die folgenden Ergebnisse zurück:
{ name: 'Guard' }
Dies sagt uns, dass „Guard“ mehrmals im Feld „Position“ vorkommt.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere gängige Vorgänge in MongoDB ausführen:
MongoDB: So fügen Sie einer Sammlung ein neues Feld hinzu
MongoDB: So gruppieren und zählen
MongoDB: So gruppieren Sie nach mehreren Feldern