MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Remover duplicata no MongoDB


Sim, dropDups se foi para sempre. Mas você pode definitivamente atingir seu objetivo com pouco esforço.

Você precisa primeiro encontrar todas as linhas duplicadas e, em seguida, remover todas, exceto primeiro.
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}});
});

Como você vê doc.dups.shift() removerá primeiro _id da matriz e, em seguida, remova todos os documentos com _ids restantes na matriz de dups.

script acima irá remover todos os documentos duplicados.