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

MongoDB - Eliminar un documento

En MongoDB, puede eliminar documentos utilizando uno de los tres métodos.

MongoDB ofrece tres métodos para eliminar documentos:

  • db.collection.deleteOne()
  • db.collection.deleteMany()
  • db.collection.remove()

El db.collection.deleteOne() Método

El db.collection.deleteOne() elimina solo un documento, incluso si más de un documento coincide con los criterios.

Aquí hay un ejemplo de db.collection.deleteOne() método para eliminar un solo documento.

Primero, ejecutemos una consulta que arroje múltiples resultados:

db.artists.find( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Resultados:

{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

Bien, sabemos que hay tres documentos que coinciden con ese criterio.

Ahora usemos exactamente los mismos criterios de filtrado para nuestro db.collection.deleteOne() método:

db.artists.deleteOne( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Mensaje resultante:

{ "acknowledged" : true, "deletedCount" : 1 }

Por lo tanto, solo se eliminó un documento, a pesar de que tres documentos coincidían con los criterios.

Ejecutemos find() consulta de nuevo para ver qué documentos quedan:

db.artists.find( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Resultados:

{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

El db.collection.deleteMany() Método

db.collection.deleteMany() elimina todos los documentos que coinciden con los criterios.

Así que ejecutemos db.collection.deleteMany() método con exactamente los mismos criterios que nuestro ejemplo anterior. Recuerde, quedan dos registros. Veamos si db.collection.deleteMany() elimina ambos:

db.artists.deleteMany( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )

Mensaje resultante:

{ "acknowledged" : true, "deletedCount" : 2 }

Así que los dos registros restantes fueron eliminados.

El db.collection.remove() Método

El db.collection.remove() elimina un solo documento o todos los documentos que coinciden con los criterios especificados.

Aquí, eliminamos todos los documentos donde el nombre del artista es "AC/DC".

db.artists.remove( { artistname: "AC/DC" } )

Resultados:

WriteResult({ "nRemoved" : 1 })

En este caso, solo hay un AC/DC :)

El justOne Opción

Puedes usar el justOne parámetro para limitar la operación de eliminación a un solo documento (al igual que usar db.collection.deleteOne() ).

He aquí un ejemplo.

Primero, ejecutemos una consulta que devuelva varios documentos:

db.musicians.find( { born: { $lt: 1950 } } )

Resultados:

{ "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }

Ahora eliminaremos uno de esos registros usando justOne opción. Nuevamente, usaremos exactamente los mismos criterios de filtrado:

db.musicians.remove( { born: { $lt: 1950 } }, { justOne: 1 } )

Mensaje resultante:

WriteResult({ "nRemoved" : 1 })

Ahora ejecutemos la misma consulta para ver qué documentos quedan:

db.musicians.find( { born: { $lt: 1950 } } )

Resultados:

{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }

Eliminar todos los documentos de una colección

Puede eliminar todos los documentos de una colección simplemente omitiendo cualquier criterio de filtrado.

Eliminemos todos los documentos en los artistas colección:

db.artists.remove( {} )

Mensaje resultante:

WriteResult({ "nRemoved" : 8 })

Si recibe un Error:eliminar necesita una consulta error, comprueba que no te has olvidado de incluir las llaves. Aún debe incluirlos.