MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

4 начина за изтриване на документ в MongoDB

В MongoDB, ако трябва да изтриете документ в mongo shell, можете да използвате:

  • db.collection.remove() метод
  • delete команда
  • db.collection.deleteOne() метод
  • db.collection.deleteMany() метод

Тази статия предоставя примери за всеки.

db.collection.remove() Метод

db.collection.remove() метод премахва (т.е. изтрива) документи от колекция. Можете да изтриете всички документи, някои документи или един документ според изискванията.

Ето пример за изтриване на конкретен документ.

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

Резултат:

WriteResult({ "nRemoved" : 1 })

Това изтрива документа с _id стойност на 3 от employees колекция.

Не е задължително обаче да съответства на един документ. Критериите за филтриране могат да съответстват на множество документи и дори можете да оставите критериите за филтриране празни, за да съответстват на всички документи (т.е. да изтриете всички документи).

Ето пример за изтриване на всички документи:

db.employees.remove({})

Резултат:

WriteResult({ "nRemoved" : 5 })

Резултатът ни показва, че бяха премахнати пет документа (така че колекцията очевидно съдържаше пет документа, преди да ги изтрием всички).

remove() методът също така приема justOne параметър за ограничаване на премахването само до един документ. Това изтрива първия документ, който отговаря на критериите за изтриване.

Пример:

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

Резултат:

WriteResult({ "nRemoved" : 1 })

В този случай критериите ни за филтриране са празен документ и така той съответства на всички документи в колекцията. Само един документ обаче се изтрива, защото използваме justOne: true .

delete Команда

delete командата прави точно същото нещо като remove() метод. Всъщност, remove() метод използва командата delete.

Ето пример за изтриване на конкретен документ с delete команда.

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

Резултат:

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

db.collection.deleteOne() Метод

db.collection.deleteOne() методът е подобен на db.collection.remove() метод, с изключение на това, че изтрива само един документ от посочената колекция.

Той приема условие за филтър, точно като db.collection.remove() .

Пример:

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

Резултат:

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

Това изтри служител номер 4.

Ако предоставите по-широк филтър, който връща множество документи, той изтрива само първия.

Например следното изтрива първия документ в колекцията, независимо колко документа има в колекцията:

db.employees.deleteOne({})

db.collection.deleteOne() методът може да бъде удобен метод за използване, ако се притеснявате да не изтриете случайно множество документи. Най-много документи, които ще изтрие, е един, така че ако направите грешка „дебел пръст“, няма да премахнете случайно всички документи от колекцията (освен ако разбира се няма само един документ в колекцията).

db.collection.deleteMany() Метод

db.collection.deleteMany() методът е подобен на db.collection.deleteOne() освен че може да изтрие множество документи.

Всъщност вероятно е по-скоро remove() , защото може да премахне множество документи и един документ (въпреки че няма justOne параметър като remove() прави).

Този метод може да бъде удобен, ако искате да изтриете всички документи, които отговарят на даден критерий.

Пример:

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

Резултат:

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

Това изтри всички документи, които имат salary поле над 80000. В този случай само два документа съвпадат, но може да е произволен брой.

Можете също да използвате db.collection.deleteMany() за да изтриете всички документи от колекцията.

Пример:

db.employees.deleteMany({})

Резултат:

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

В този случай в колекцията имаше пет документа и всичките пет бяха изтрити.

Повече информация

Горните методи също приемат редица незадължителни аргументи, като writeConcern и collation .

deleteOne() и deleteMany() също така приемете hint аргумент.

По-долу са връзки към документацията на MongoDB за всеки метод/команда:

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да вмъкна документ с дата в mongo?

  2. Как да анализирате използването на диск от Docker контейнер

  3. как мога да се свържа с отдалечен монго сървър от терминал на Mac OS

  4. Как да избегнем transparent_hugepage/defrag предупреждение от mongodb?

  5. MongoDB срещу DynamoDB:Какво трябва да знаете