MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB – Löschen eines Dokuments

In MongoDB können Sie Dokumente mit einer von drei Methoden löschen.

MongoDB bietet drei Methoden zum Löschen von Dokumenten:

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

Der db.collection.deleteOne() Methode

Die db.collection.deleteOne() löscht nur ein Dokument, auch wenn mehr als ein Dokument den Kriterien entspricht.

Hier ist ein Beispiel für db.collection.deleteOne() Methode zum Löschen eines einzelnen Dokuments.

Lassen Sie uns zuerst eine Abfrage ausführen, die mehrere Ergebnisse zurückgibt:

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

Ergebnisse:

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

OK, wir wissen also, dass es drei Dokumente gibt, die diesen Kriterien entsprechen.

Lassen Sie uns nun genau dieselben Filterkriterien für unsere db.collection.deleteOne() verwenden Methode:

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

Ergebnismeldung:

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

Es wurde also nur ein Dokument gelöscht, obwohl drei Dokumente den Kriterien entsprachen.

Lassen Sie uns find() ausführen Abfrage erneut, um zu sehen, welche Dokumente verbleiben:

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

Ergebnisse:

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

Die db.collection.deleteMany() Methode

Die db.collection.deleteMany() Methode löscht alle Dokumente, die den Kriterien entsprechen.

Lassen Sie uns also db.collection.deleteMany() ausführen Methode mit genau den gleichen Kriterien wie in unserem vorherigen Beispiel. Denken Sie daran, dass zwei Aufzeichnungen verbleiben. Mal sehen, ob db.collection.deleteMany() löscht beides:

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

Ergebnismeldung:

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

Also wurden die verbleibenden zwei Datensätze gelöscht.

Der db.collection.remove() Methode

Die db.collection.remove() Methode löscht ein einzelnes Dokument oder alle Dokumente, die den angegebenen Kriterien entsprechen.

Hier löschen wir alle Dokumente, bei denen der Künstlername "AC/DC" ist.

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

Ergebnisse:

WriteResult({ "nRemoved" : 1 })

In diesem Fall gibt es nur einen AC/DC :)

Der justOne Möglichkeit

Sie können den justOne verwenden -Parameter, um den Löschvorgang auf nur ein Dokument zu beschränken (genau wie bei der Verwendung von db.collection.deleteOne() ).

Hier ist ein Beispiel.

Lassen Sie uns zuerst eine Abfrage ausführen, die mehrere Dokumente zurückgibt:

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

Ergebnisse:

{ "_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 }

Jetzt löschen wir einen dieser Datensätze mit justOne Möglichkeit. Auch hier verwenden wir genau dieselben Filterkriterien:

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

Ergebnismeldung:

WriteResult({ "nRemoved" : 1 })

Lassen Sie uns nun dieselbe Abfrage ausführen, um zu sehen, welche Dokumente noch übrig sind:

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

Ergebnisse:

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

Alle Dokumente in einer Sammlung löschen

Sie können alle Dokumente in einer Sammlung löschen, indem Sie einfach alle Filterkriterien weglassen.

Lassen Sie uns alle Dokumente in artists löschen Sammlung:

db.artists.remove( {} )

Ergebnismeldung:

WriteResult({ "nRemoved" : 8 })

Wenn Sie einen Fehler:Entfernen benötigt eine Abfrage erhalten überprüfen Sie, ob Sie die geschweiften Klammern nicht vergessen haben. Sie müssen diese trotzdem einschließen.