sql >> Databáze >  >> NoSQL >> MongoDB

4 způsoby, jak odstranit dokument v MongoDB

Pokud v MongoDB potřebujete smazat dokument v mongo shellu, můžete použít:

  • Příkaz db.collection.remove() metoda
  • Položka delete příkaz
  • Funkce db.collection.deleteOne() metoda
  • Příkaz db.collection.deleteMany() metoda

Tento článek poskytuje příklady každého z nich.

Příkaz db.collection.remove() Metoda

db.collection.remove() metoda odstraní (tj. odstraní) dokumenty z kolekce. Podle potřeby můžete odstranit všechny dokumenty, některé dokumenty nebo jeden dokument.

Zde je příklad smazání konkrétního dokumentu.

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

Výsledek:

WriteResult({ "nRemoved" : 1 })

Tím se smaže dokument s _id hodnotu 3 od employees kolekce.

Nemusí však odpovídat jedinému dokumentu. Kritéria filtru mohou odpovídat více dokumentům a dokonce můžete nechat kritéria filtru prázdná, aby odpovídala všem dokumentům (tj. smazat všechny dokumenty).

Zde je příklad odstranění všech dokumentů:

db.employees.remove({})

Výsledek:

WriteResult({ "nRemoved" : 5 })

Výsledek nám ukazuje, že bylo odstraněno pět dokumentů (takže sbírka zjevně obsahovala pět dokumentů, než jsme je všechny smazali).

remove() metoda také přijímá justOne parametr pro omezení odstranění pouze na jeden dokument. Tím se odstraní první dokument, který odpovídá kritériím pro odstranění.

Příklad:

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

Výsledek:

WriteResult({ "nRemoved" : 1 })

V tomto případě je naším kritériem filtru prázdný dokument, a proto odpovídá všem dokumentům v kolekci. Smaže se však pouze jeden dokument, protože používáme justOne: true .

Položka delete Příkaz

delete příkaz dělá přesně to samé jako remove() metoda. Ve skutečnosti, remove() metoda používá příkaz delete.

Zde je příklad odstranění konkrétního dokumentu pomocí delete příkaz.

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

Výsledek:

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

db.collection.deleteOne() Metoda

db.collection.deleteOne() metoda je podobná db.collection.remove() kromě toho, že odstraní pouze jeden dokument ze zadané kolekce.

Přijímá podmínku filtru, stejně jako db.collection.remove() .

Příklad:

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

Výsledek:

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

Tím byl odstraněn zaměstnanec číslo 4.

Pokud poskytnete širší filtr, který vrátí více dokumentů, odstraní pouze první.

Následující příklad odstraní první dokument ve sbírce bez ohledu na počet dokumentů ve sbírce:

db.employees.deleteOne({})

db.collection.deleteOne() Tato metoda může být užitečnou metodou, pokud se obáváte náhodného smazání více dokumentů. Nejvíce dokumentů, které smaže, je jeden, takže pokud uděláte chybu „tlustý prst“, neodstraníte náhodně všechny dokumenty ze sbírky (pokud samozřejmě ve sbírce není pouze jeden dokument).

Položka db.collection.deleteMany() Metoda

db.collection.deleteMany() metoda je podobná db.collection.deleteOne() kromě toho, že může odstranit více dokumentů.

Ve skutečnosti je to pravděpodobně spíše jako remove() , protože dokáže odstranit více dokumentů a jeden dokument (ačkoli nemá justOne parametr jako remove() ano).

Tato metoda může být užitečná, pokud chcete odstranit všechny dokumenty, které odpovídají zadaným kritériím.

Příklad:

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

Výsledek:

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

Tím byly odstraněny všechny dokumenty, které mají salary pole přes 80 000. V tomto případě se shodovaly pouze dva dokumenty, ale mohlo to být libovolné číslo.

Můžete také použít db.collection.deleteMany() k odstranění všech dokumentů z kolekce.

Příklad:

db.employees.deleteMany({})

Výsledek:

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

V tomto případě bylo ve sbírce pět dokumentů a všech pět bylo smazáno.

Další informace

Výše uvedené metody také přijímají řadu volitelných argumentů, jako je writeConcern a collation .

deleteOne() a deleteMany() také přijmout hint argument.

Níže jsou uvedeny odkazy na dokumentaci MongoDB pro každou metodu/příkaz:

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

  1. Připojení ke spravovanému redis s auth uživatelským jménem/heslem nodejs

  2. Získejte nejnovější záznam z kolekce mongodb

  3. jarní relace redis 'Není definována žádná bean s názvem 'springSessionRepositoryFilter'

  4. python-rq worker se automaticky zavře