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

4 formas de eliminar un documento en MongoDB

En MongoDB, si necesita eliminar un documento en el shell de mongo, puede usar:

  • El db.collection.remove() método
  • El delete comando
  • El db.collection.deleteOne() método
  • El db.collection.deleteMany() método

Este artículo proporciona ejemplos de cada uno.

El db.collection.remove() Método

El db.collection.remove() elimina (es decir, elimina) documentos de una colección. Puede eliminar todos los documentos, algunos documentos o un solo documento según sea necesario.

Este es un ejemplo de cómo eliminar un documento específico.

db.employees.remove({ "_id": 3 })

Resultado:

WriteResult({ "nRemoved" : 1 })

Eso elimina el documento con un _id valor de 3 de los employees colección.

Sin embargo, no tiene que coincidir con un solo documento. Los criterios de filtro pueden coincidir con varios documentos e incluso puede dejar los criterios de filtro en blanco para que coincidan con todos los documentos (es decir, eliminar todos los documentos).

Este es un ejemplo de eliminación de todos los documentos:

db.employees.remove({})

Resultado:

WriteResult({ "nRemoved" : 5 })

El resultado nos muestra que se eliminaron cinco documentos (por lo que la colección obviamente contenía cinco documentos antes de que los elimináramos todos).

El remove() El método también acepta un justOne parámetro para limitar la eliminación a un solo documento. Esto elimina el primer documento que coincida con los criterios de eliminación.

Ejemplo:

db.employees.remove({}, "justOne: true")

Resultado:

WriteResult({ "nRemoved" : 1 })

En este caso, nuestro criterio de filtro es un documento vacío, por lo que coincide con todos los documentos de la colección. Sin embargo, solo se elimina un documento, porque usamos justOne: true .

El delete Comando

El delete El comando hace exactamente lo mismo que remove() método. De hecho, el remove() El método utiliza el comando de eliminación.

Aquí hay un ejemplo de cómo eliminar un documento específico con delete comando.

db.runCommand(
   {
      delete: "employees",
      deletes: [ { q: { _id: 4 }, limit: 1 } ]
   }
)

Resultado:

{ "n" : 1, "ok" : 1 }

El db.collection.deleteOne() Método

El db.collection.deleteOne() El método es similar al db.collection.remove() método, excepto que elimina solo un documento de la colección especificada.

Acepta una condición de filtro, al igual que db.collection.remove() .

Ejemplo:

db.employees.deleteOne({ "_id": 4 })

Resultado:

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

Este número de empleado eliminado 4.

Si proporciona un filtro más amplio que devuelve varios documentos, solo elimina el primero.

Por ejemplo, lo siguiente elimina el primer documento de la colección, independientemente de cuántos documentos haya en la colección:

db.employees.deleteOne({})

El db.collection.deleteOne() El método puede ser un método útil para usar si le preocupa eliminar accidentalmente varios documentos. La mayoría de los documentos que eliminará es uno, por lo que si comete un error de "dedo gordo", no eliminará accidentalmente todos los documentos de la colección (a menos, por supuesto, que solo haya un documento en la colección).

El db.collection.deleteMany() Método

db.collection.deleteMany() el método es similar a db.collection.deleteOne() excepto que puede eliminar varios documentos.

En realidad, probablemente sea más como remove() , porque puede eliminar varios documentos y un solo documento (aunque no tiene el justOne parámetro como remove() lo hace).

Este método puede ser útil si desea eliminar todos los documentos que coincidan con un criterio determinado.

Ejemplo:

db.employees.deleteMany({ "salary": { $gt: 80000 } })

Resultado:

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

Esto eliminó todos los documentos que tienen un salary campo superior a 80000. En este caso, solo coincidían dos documentos, pero podría haber sido cualquier número.

También puede usar db.collection.deleteMany() para eliminar todos los documentos de la colección.

Ejemplo:

db.employees.deleteMany({})

Resultado:

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

En este caso había cinco documentos en la colección y los cinco fueron eliminados.

Más información

Los métodos anteriores también aceptan una serie de argumentos opcionales, como writeConcern y collation .

deleteOne() y deleteMany() también acepta una hint argumento.

A continuación hay enlaces a la documentación de MongoDB para cada método/comando:

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