原文: https://beginnersbook.com/2017/09/mongodb-delete-document/

在本教程中,我们将学习如何从集合中删除文档。remove()方法用于从 MongoDB 中的集合中删除文档。

remove()方法的语法:

  1. db.collection_name.remove(delete_criteria)

要了解如何在 MongoDB 命令中指定条件,请参阅本教程: MongoDB 查询文档

使用remove()方法删除文档

假设我的 MongoDB 数据库中有一个名为beginnersbookdb的集合studentsstudents集合中的文档是:

  1. > db.students.find().pretty()
  2. {
  3. "_id" : ObjectId("59bcecc7668dcce02aaa6fed"),
  4. "StudentId" : 1001,
  5. "StudentName" : "Steve",
  6. "age" : 30
  7. }
  8. {
  9. "_id" : ObjectId("59bcecc7668dcce02aaa6fef"),
  10. "StudentId" : 3333,
  11. "StudentName" : "Rick",
  12. "age" : 35
  13. }

现在我想删除这个学生 ID 等于 3333 的学生。要做到这一点,我会使用remove()方法编写一个命令,如下所示:

  1. db.students.remove({"StudentId": 3333})

输出:

  1. WriteResult({ "nRemoved" : 1 })

验证文档是否实际删除。键入以下命令:

  1. db.students.find().pretty()

它将列出学生集合的所有文档。

以下是上述所有步骤的屏幕截图:

MongoDB 从集合中删除文档 - 图1

如何只删除一个符合条件的文档?

当集合中存在多个符合条件的文档时,如果运行remove命令,则将删除所有这些文档。但是,有一种方法可以将删除限制为仅一个文档,这样即使有更多文档符合删除条件,也只会删除一个文档。

  1. db.collection_name.remove(delete_criteria, justOne)

这里justOne是一个布尔参数,只取 1 和 0,如果你给 1,那么它会将文档删除限制为只有 1 个文档。这是一个可选参数,如上所述,我们使用remove()方法而不使用此参数。

例如,我在集合中有以下记录。

  1. > db.walkingdead.find().pretty()
  2. {
  3. "_id" : ObjectId("59bf280cb8e797a22c654229"),
  4. "name" : "Rick Grimes",
  5. "age" : 32,
  6. "rname" : "Andrew Lincoln"
  7. }
  8. {
  9. "_id" : ObjectId("59bf2851b8e797a22c65422a"),
  10. "name" : "Negan",
  11. "age" : 35,
  12. "rname" : "Jeffrey Dean Morgan"
  13. }
  14. {
  15. "_id" : ObjectId("59bf28a5b8e797a22c65422b"),
  16. "name" : "Daryl Dixon",
  17. "age" : 32,
  18. "rname" : "Norman Reedus"
  19. }

假设我想删除年龄等于 32 的文档。此集合中有两个文档符合此条件。但是,为了将删除限制为 1,我们将justOne参数设置为true

  1. db.walkingdead.remove({"age": 32}, 1)

输出:如您所见,只有一个文档被删除。

  1. WriteResult({ "nRemoved" : 1 })

MongoDB 从集合中删除文档 - 图2

删除所有文档

如果要从集合中删除所有文档但不想删除集合本身,则可以使用remove()方法,如下所示:

  1. db.collection_name.remove({})

如果您想删除该集合以及所有文档,请参阅本指南:MongoDB 删除集合