MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Entfernen Sie Duplikate in MongoDB

Ja, dropDups ist für immer weg. Aber man kann sein Ziel definitiv mit wenig Aufwand erreichen.

Sie müssen zuerst alle doppelten Zeilen finden und dann alle außer zuerst entfernen.

db.dups.aggregate([{$group:{_id:"$contact_id", dups:{$push:"$_id"}, count: {$sum: 1}}},
{$match:{count: {$gt: 1}}}
]).forEach(function(doc){
  doc.dups.shift();
  db.dups.remove({_id : {$in: doc.dups}});
});

Wie Sie doc.dups.shift() sehen entfernt die erste _id aus dem Array und entfernen Sie dann alle Dokumente mit verbleibenden _ids im dups-Array.

Das obige Skript entfernt alle doppelten Dokumente.