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()