In MongoDB, puoi eliminare i documenti utilizzando uno dei tre metodi.
MongoDB fornisce tre metodi per eliminare i documenti:
db.collection.deleteOne()
db.collection.deleteMany()
db.collection.remove()
Il db.collection.deleteOne()
Metodo
Il db.collection.deleteOne()
cancella solo un documento, anche se più di un documento corrisponde ai criteri.
Ecco un esempio di db.collection.deleteOne()
metodo per eliminare un singolo documento.
Innanzitutto, eseguiamo una query che restituisce più risultati:
db.artists.find( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )
Risultati:
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }
OK, quindi sappiamo che ci sono tre documenti che soddisfano quei criteri.
Ora utilizziamo gli stessi identici criteri di filtro per il nostro db.collection.deleteOne()
metodo:
db.artists.deleteOne( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )
Messaggio risultante:
{ "acknowledged" : true, "deletedCount" : 1 }
Quindi è stato eliminato solo un documento, anche se tre documenti corrispondevano ai criteri.
Eseguiamo find()
interroga di nuovo per vedere quali documenti rimangono:
db.artists.find( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )
Risultati:
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }
Il db.collection.deleteMany()
Metodo
Il db.collection.deleteMany()
elimina tutti i documenti che soddisfano i criteri.
Quindi eseguiamo il db.collection.deleteMany()
metodo con gli stessi criteri del nostro esempio precedente. Ricorda, rimangono due record. Vediamo se db.collection.deleteMany()
elimina entrambi:
db.artists.deleteMany( { artistname: { $in: [ "The Kooks", "Gang of Four", "Bastille" ] } } )
Messaggio risultante:
{ "acknowledged" : true, "deletedCount" : 2 }
Quindi i restanti due record sono stati eliminati.
Il db.collection.remove()
Metodo
Il db.collection.remove()
elimina un singolo documento o tutti i documenti che soddisfano i criteri specificati.
Qui cancelliamo tutti i documenti in cui il nome dell'artista è "AC/DC".
db.artists.remove( { artistname: "AC/DC" } )
Risultati:
WriteResult({ "nRemoved" : 1 })
In questo caso, c'è solo un AC/DC :)
Il justOne
Opzione
Puoi usare justOne
parametro per limitare l'operazione di rimozione a un solo documento (proprio come usare db.collection.deleteOne()
).
Ecco un esempio.
Innanzitutto, eseguiamo una query che restituisce più documenti:
db.musicians.find( { born: { $lt: 1950 } } )
Risultati:
{ "_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 }
Ora elimineremo uno di quei record usando justOne
opzione. Anche in questo caso, utilizzeremo gli stessi identici criteri di filtro:
db.musicians.remove( { born: { $lt: 1950 } }, { justOne: 1 } )
Messaggio risultante:
WriteResult({ "nRemoved" : 1 })
Ora eseguiamo la stessa query per vedere quali documenti sono rimasti:
db.musicians.find( { born: { $lt: 1950 } } )
Risultati:
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 } { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }
Elimina tutti i documenti in una raccolta
Puoi eliminare tutti i documenti di una raccolta semplicemente omettendo qualsiasi criterio di filtro.
Eliminiamo tutti i documenti negli artisti collezione:
db.artists.remove( {} )
Messaggio risultante:
WriteResult({ "nRemoved" : 8 })
Se ricevi un Errore:la rimozione richiede una query errore, controlla di non aver dimenticato di inserire le parentesi graffe. Devi ancora includerli.