Eliminar documentos duplicados en MongoDB

Publicado por parzibyte en

Introducción

Hablando de duplicidad, en alguna ocasión tuve que eliminar datos duplicados en MySQL y ya lo expliqué. Hoy explicaré cómo podemos eliminar duplicados en MongoDB, un gestor de base de datos que se compone de colecciones y que dentro de éstas aloja documentos.

Eliminar duplicados

Si sólo vienes por la solución, y no quieres ver el ejemplo, lo que tienes que ejecutar es esto:

Ahí “coleccion” es el nombre de tu colección. Y “laClave” es la clave que no quieres que se repita más de una vez.

Por cierto, haz un respaldo completo antes.

Quiero aclarar que la solución no es mía, yo sólo vengo a exponerla y a dar un ejemplo.

Ejemplo

Base de datos

Para este ejemplo utilizaré una base de datos de libros, en donde no puede repetirse el ISBN. Por favor nota que sólo es un base de datos de ejemplo, no esperes que los datos rean reales; se trata de ilustrar.

Insertaré esto:

Consultando

Consultaré los datos para ver si se han insertado:

Hora de eliminar los repetidos. Nota: en este caso es un ejemplo algo raro, pero puede que en alguna ocasión nos falle sólo una palabra y tengamos que eliminar los duplicados.

Eliminando duplicados

Para eliminarlos, utilizo esto:

Ejecuto la “consulta”:

Verificando eliminación

Y si vuelvo a consultar los datos existentes, veo esto:

¡Magia pura! ya no hay repetidos. Nos hemos quedado sólo con un dato. Esto funciona muy bien cuando tenemos documentos realmente repetidos, es decir, que todas sus claves sean idénticas; ya que de esta manera no importará cuál de ambos se elimine.

En este caso utilizamos al ISBN para eliminar, pero podemos utilizar cualquier clave.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: