在MongoDB中删除文档的4种方法
在 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 命令。delete``remove()``remove()
下面是使用命令删除特定文档的示例。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()
实际上,它可能更像 ,因为它可以删除多个文档和单个文档(尽管它没有像 do 那样的参数)。remove()``justOne``remove()
如果要删除与给定条件匹配的所有文档,此方法会很方便。
例:
db.employees.deleteMany({ "salary": { $gt: 80000 } })
结果:
{ “acknowledged” : true, “deletedCount” : 2 }
这将删除字段超过 80000 的所有文档。在这种情况下,只有两个文档匹配,但它可以是任何数字。salary
您还可以 从集合中删除所有文档。db.collection.deleteMany()
例:
db.employees.deleteMany({})
结果:
{ “acknowledged” : true, “deletedCount” : 5 }
在本例中,集合中有五个文档,所有五个文档都被删除了。
更多信息
上述方法还接受许多可选参数,例如 和 。writeConcern``collation
deleteOne()并接受论点。deleteMany()``hint
以下是每个方法/命令的MongoDB文档的链接:
[db.collection.remove()](https://docs.mongodb.com/manual/reference/method/db.collection.remove/ "https://docs.mongodb.com/manual/reference/method/db.collection.remove/")delete[db.collection.deleteOne()](https://docs.mongodb.com/manual/reference/method/db.collection.deleteOne/ "https://docs.mongodb.com/manual/reference/method/db.collection.deleteOne/")[db.collection.deleteMany()](https://docs.mongodb.com/manual/reference/method/db.collection.deleteMany/ "https://docs.mongodb.com/manual/reference/method/db.collection.deleteMany/")