sql >> Databasteknik >  >> NoSQL >> MongoDB

Ta bort dubblett i MongoDB

Ja, dropDups är borta för gott. Men du kan definitivt uppnå ditt mål med lite ansträngning.

Du måste först hitta alla dubbletter av rader och sedan ta bort alla utom först.

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}});
});

Som du ser doc.dups.shift() tar bort första _id från array och ta sedan bort alla dokument med återstående _ids i dups array.

skriptet ovan tar bort alla dubbletter av dokument.



  1. Inbäddat dokument utan Array?

  2. Så här returnerar du bara de kapslade dokumenten i en array från alla dokument

  3. Stäng mongooses anslutning ordentligt när du är klar

  4. Flaska efter exempel – Implementera en Redis-uppgiftskö