sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo eliminar duplicados en función de una clave en Mongodb?

Esta respuesta está obsoleta : los dropDups La opción se eliminó en MongoDB 3.0, por lo que se requerirá un enfoque diferente en la mayoría de los casos. Por ejemplo, podría usar la agregación como se sugiere en:Documentos duplicados de MongoDB incluso después de agregar una clave única.

Si está seguro de que source_references.key identifica registros duplicados, puede garantizar un índice único con dropDups:true opción de creación de índice en MongoDB 2.6 o anterior:

db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})

Esto mantendrá el primer documento único para cada source_references.key y elimine cualquier documento subsiguiente que, de otro modo, provocaría una infracción de clave duplicada.

Nota importante :Cualquier documento al que le falte source_references.key se considerará que el campo tiene un nulo valor, por lo que los documentos subsiguientes que no tengan el campo clave se eliminarán. Puede agregar sparse:true opción de creación de índice para que el índice solo se aplique a documentos con una source_references.key campo.

Precaución obvia :Realice una copia de seguridad de su base de datos y pruébelo primero en un entorno provisional si le preocupa la pérdida de datos no deseada.