Saltar al contenido

Cómo eliminar duplicados en función de un key en mongodb?

Intenta entender el código de forma correcta antes de aplicarlo a tu proyecto si ttienes algo que aportar puedes comentarlo.

Solución:

Esta respuesta está obsoleta: la 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 documentos únicos key.

Si está seguro de que el source_references.key identifica registros duplicados, puede garantizar un índice único con el 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 causaría un duplicado key violación.

Nota IMPORTANTE: Cualquier documento que falte source_references.key Se considerará que el campo tiene un null valor, por lo que los documentos posteriores que faltan el key el campo será eliminado. Puedes agregar el sparse:true opción de creación de índice para que el índice solo se aplique a documentos con un 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.

Esta es la consulta más fácil que usé en mi MongoDB 3.2

db.myCollection.find(, myCustomKey:1).sort(_id:1).forEach(function(doc)
    db.myCollection.remove(_id:$gt:doc._id, myCustomKey:doc.myCustomKey);
)

Indexa tu customKey antes de ejecutar esto para aumentar la velocidad

Si bien @Stennie’s es una respuesta válida, no es la única forma. De hecho, el manual de MongoDB le pide que tenga mucho cuidado al hacerlo. Hay otras dos opciones

  1. Deje que MongoDB lo haga por usted usando Map Reduce
    • De otra manera
  2. Lo haces programáticamente, lo que es menos eficiente.

Te mostramos comentarios y puntuaciones

Si haces scroll puedes encontrar las notas de otros programadores, tú todavía tienes la libertad de mostrar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *