sql >> Database >  >> NoSQL >> MongoDB

4 manieren om een ​​document in MongoDB te verwijderen

Als u in MongoDB een document in de mongo-shell moet verwijderen, kunt u het volgende gebruiken:

  • De db.collection.remove() methode
  • De delete commando
  • De db.collection.deleteOne() methode
  • De db.collection.deleteMany() methode

Dit artikel geeft voorbeelden van elk.

De db.collection.remove() Methode

De db.collection.remove() methode verwijdert (d.w.z. verwijdert) documenten uit een verzameling. U kunt desgewenst alle documenten, sommige documenten of een enkel document verwijderen.

Hier is een voorbeeld van het verwijderen van een specifiek document.

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

Resultaat:

WriteResult({ "nRemoved" : 1 })

Dat verwijdert het document met een _id waarde van 3 van de employees collectie.

Het hoeft echter niet met een enkel document overeen te komen. De filtercriteria kunnen overeenkomen met meerdere documenten en u kunt de filtercriteria zelfs leeg laten om alle documenten te matchen (d.w.z. alle documenten verwijderen).

Hier is een voorbeeld van het verwijderen van alle documenten:

db.employees.remove({})

Resultaat:

WriteResult({ "nRemoved" : 5 })

Het resultaat laat ons zien dat vijf documenten zijn verwijderd (dus de collectie bevatte duidelijk vijf documenten voordat we ze allemaal verwijderden).

De remove() methode accepteert ook een justOne parameter om de verwijdering te beperken tot slechts één document. Hiermee wordt het eerste document verwijderd dat overeenkomt met de verwijderingscriteria.

Voorbeeld:

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

Resultaat:

WriteResult({ "nRemoved" : 1 })

In dit geval zijn onze filtercriteria een leeg document en komen dus overeen met alle documenten in de collectie. Er wordt echter maar één document verwijderd, omdat we justOne: true . gebruiken .

De delete Commando

De delete commando doet precies hetzelfde als het remove() methode. In feite is de remove() methode gebruikt het delete-commando.

Hier is een voorbeeld van het verwijderen van een specifiek document met de delete commando.

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

Resultaat:

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

De db.collection.deleteOne() Methode

De db.collection.deleteOne() methode is vergelijkbaar met de db.collection.remove() methode, behalve dat het slechts één document uit de opgegeven verzameling verwijdert.

Het accepteert een filtervoorwaarde, net als db.collection.remove() .

Voorbeeld:

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

Resultaat:

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

Dit verwijderde werknemer nummer 4.

Als je een breder filter opgeeft dat meerdere documenten retourneert, wordt alleen de eerste verwijderd.

Het volgende verwijdert bijvoorbeeld het eerste document in de verzameling, ongeacht het aantal documenten in de verzameling:

db.employees.deleteOne({})

De db.collection.deleteOne() methode kan een handige methode zijn om te gebruiken als u zich zorgen maakt over het per ongeluk verwijderen van meerdere documenten. De meeste documenten die worden verwijderd, zijn er één, dus als u een "dikke vinger"-fout maakt, verwijdert u niet per ongeluk alle documenten uit de verzameling (tenzij er natuurlijk maar één document in de verzameling is).

De db.collection.deleteMany() Methode

De db.collection.deleteMany() methode is vergelijkbaar met db.collection.deleteOne() behalve dat het meerdere documenten kan verwijderen.

Eigenlijk lijkt het meer op remove() , omdat het meerdere documenten en een enkel document kan verwijderen (hoewel het niet de justOne heeft parameter zoals remove() doet).

Deze methode kan handig zijn als u alle documenten wilt verwijderen die aan een bepaald criterium voldoen.

Voorbeeld:

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

Resultaat:

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

Hiermee zijn alle documenten verwijderd met een salary veld meer dan 80000. In dit geval kwamen slechts twee documenten overeen, maar het had elk willekeurig aantal kunnen zijn.

U kunt ook db.collection.deleteMany() . gebruiken om alle documenten uit de collectie te verwijderen.

Voorbeeld:

db.employees.deleteMany({})

Resultaat:

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

In dit geval waren er vijf documenten in de collectie en werden ze alle vijf verwijderd.

Meer informatie

De bovenstaande methoden accepteren ook een aantal optionele argumenten, zoals writeConcern en collation .

deleteOne() en deleteMany() accepteer ook een hint argument.

Hieronder staan ​​links naar de MongoDB-documentatie voor elke methode/opdracht:

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

  1. PHP opstarten Kan dynamische bibliotheek php_mongo.dll niet laden

  2. How-to:Gescande PDF's indexeren op schaal met minder dan 50 regels code

  3. Modelparameters doorgeven aan een mangoestmodel

  4. Hoe GridFS te gebruiken om afbeeldingen op te slaan met Node.js en Mongoose