Hoe duplicaten te vinden in mongodb
U kunt de volgende syntaxis gebruiken om documenten met dubbele waarden in MongoDB te vinden:
db.collection.aggregate([ {" $group ": { "_id": " $field1 ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
Dit is wat deze syntaxis doet:
- Groepeer alle documenten met dezelfde waarde in veld 1
- Match groepen die meer dan één document hebben
- Projecteer alle groepen die meer dan één document hebben
Deze specifieke zoekopdracht zoekt naar dubbele waarden in de veld1- kolom. Bewerk deze waarde eenvoudig om het veld waarin u wilt zoeken te wijzigen.
In het volgende voorbeeld ziet u hoe u deze syntaxis kunt gebruiken met een incassoteam met de volgende documenten:
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 })
Voorbeeld: Zoek documenten met dubbele waarden
We kunnen de volgende code gebruiken om alle dubbele waarden in de kolom „team“ te vinden:
db.teams.aggregate([ {" $group ": { "_id": " $team ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
Deze query retourneert de volgende resultaten:
{ name: 'Rockets' } { name: 'Mavs' }
Dit vertelt ons dat de waarden „Rockets“ en „Mavs“ meerdere keren voorkomen in het veld „team“.
Merk op dat we $team eenvoudig kunnen vervangen door $position om in plaats daarvan naar dubbele waarden in het veld „position“ te zoeken:
db.teams.aggregate([ {" $group ": { "_id": " $position ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
Deze query retourneert de volgende resultaten:
{ name: 'Guard' }
Dit vertelt ons dat “Bewaker” meerdere keren verschijnt in het veld “positie”.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in MongoDB kunt uitvoeren:
MongoDB: Hoe u een nieuw veld aan een verzameling toevoegt
MongoDB: Groeperen op en tellen
MongoDB: groeperen op meerdere velden