MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

4 modi per eliminare un documento in MongoDB

In MongoDB, se devi eliminare un documento nella mongo shell, puoi usare:

  • Il db.collection.remove() metodo
  • Il delete comando
  • Il db.collection.deleteOne() metodo
  • Il db.collection.deleteMany() metodo

Questo articolo fornisce esempi di ciascuno.

Il db.collection.remove() Metodo

Il db.collection.remove() il metodo rimuove (cioè elimina) i documenti da una raccolta. È possibile eliminare tutti i documenti, alcuni documenti o un singolo documento come richiesto.

Ecco un esempio di eliminazione di un documento specifico.

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

Risultato:

WriteResult({ "nRemoved" : 1 })

Ciò elimina il documento con un _id valore di 3 dai employees raccolta.

Tuttavia, non deve corrispondere a un singolo documento. I criteri di filtro possono corrispondere a più documenti e puoi anche lasciare vuoti i criteri di filtro in modo che corrispondano a tutti i documenti (ad esempio elimina tutti i documenti).

Ecco un esempio di eliminazione di tutti i documenti:

db.employees.remove({})

Risultato:

WriteResult({ "nRemoved" : 5 })

Il risultato ci mostra che sono stati rimossi cinque documenti (quindi la raccolta conteneva ovviamente cinque documenti prima di eliminarli tutti).

Il remove() accetta anche un justOne parametro per limitare la rimozione a un solo documento. Questo elimina il primo documento che corrisponde ai criteri di eliminazione.

Esempio:

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

Risultato:

WriteResult({ "nRemoved" : 1 })

In questo caso, il nostro criterio di filtro è un documento vuoto e quindi corrisponde a tutti i documenti nella raccolta. Tuttavia, viene eliminato solo un documento, perché utilizziamo justOne: true .

Il delete Comando

Il delete il comando fa esattamente la stessa cosa del remove() metodo. In effetti, il remove() utilizza il comando di eliminazione.

Ecco un esempio di eliminazione di un documento specifico con delete comando.

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

Risultato:

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

Il db.collection.deleteOne() Metodo

Il db.collection.deleteOne() è simile a db.collection.remove() metodo, tranne per il fatto che elimina solo un documento dalla raccolta specificata.

Accetta una condizione di filtro, proprio come db.collection.remove() .

Esempio:

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

Risultato:

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

Questo dipendente ha cancellato il numero 4.

Se fornisci un filtro più ampio che restituisce più documenti, viene eliminato solo il primo.

Ad esempio, quanto segue elimina il primo documento della raccolta, indipendentemente dal numero di documenti presenti nella raccolta:

db.employees.deleteOne({})

Il db.collection.deleteOne() può essere un metodo pratico da utilizzare se sei preoccupato di eliminare accidentalmente più documenti. La maggior parte dei documenti che cancellerà è uno, quindi se commetti un errore da "dito grasso", non rimuoverai accidentalmente tutti i documenti dalla raccolta (a meno che ovviamente non ci sia un solo documento nella raccolta).

Il db.collection.deleteMany() Metodo

Il db.collection.deleteMany() il metodo è simile a db.collection.deleteOne() tranne per il fatto che può eliminare più documenti.

In realtà, è probabilmente più simile a remove() , perché può rimuovere più documenti e un singolo documento (sebbene non abbia il justOne parametro come remove() fa).

Questo metodo può essere utile se desideri eliminare tutti i documenti che corrispondono a un determinato criterio.

Esempio:

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

Risultato:

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

Questo ha cancellato tutti i documenti che hanno uno salary campo oltre 80000. In questo caso solo due documenti corrispondevano, ma poteva essere un numero qualsiasi.

Puoi anche usare db.collection.deleteMany() per eliminare tutti i documenti dalla raccolta.

Esempio:

db.employees.deleteMany({})

Risultato:

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

In questo caso c'erano cinque documenti nella collezione e tutti e cinque sono stati cancellati.

Maggiori informazioni

I metodi precedenti accettano anche una serie di argomenti facoltativi, come writeConcern e collation .

deleteOne() e deleteMany() accetta anche un hint argomento.

Di seguito sono riportati i collegamenti alla documentazione di MongoDB per ciascun metodo/comando:

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