MongoDB 中 deleteMany()和 Remove()的区别
deleteMany() 和 remove() 都用于从 MongoDB 中删除条目。在最近的版本中,remove 被标记为已弃用。
相反,MongoDB 建议使用 deleteMany 和 deleteOne。命令 deleteMany 可以在删除之前接受要匹配的参数。
MongoDB 中 deleteMany() 的参数和返回
这个方法来自 mongosh。一般用于集合中删除任何特定集合下的文档。
这是它的使用方法。
db.collection.deleteMany(
<FILTER>,{
writeConcern: <document>,
collation: <document>
}
)
<FILTER> 表示我们可以使用我们的自定义搜索字段。假设我们要删除价格等于 30 的所有产品。
然后代码将是:
db.collection.deleteMany({
price:30
})
我们可以在这里将其他参数留空。如果要删除整个集合,请将 {} 插入 deleteMany。
这里有更多关于 writeConcern 和 collation 的信息。
| 参数 | 类型 | 说明 |
|---|---|---|
writeConcern |
文档 | 它是一个可选参数。它对文档进行确认。要了解有关 writeConcern 的更多信息,请访问此博客。 |
collation |
文档 | 它允许用户对文档使用特定于语言的规则。排序规则是一个可选参数。如果你使用它,你需要使用 local 字段。这里有更多关于 collation。 |
如果函数使用 writeConcern 参数运行,deleteMany() 会将 acknowledged 返回为 true;否则,假。它还返回 deleteCount,表示删除了多少文档。
deleteMany 删除所有匹配过滤器的文档。
示例退货可能如下所示。
{ "acknowledged" : true, "deletedCount" : 9 }
MongoDB 中 remove() 的参数和返回
remove() 方法有两个功能。它也可以充当 deleteMany 和 deleteOne。
remove() 的模板代码在这里。
db.collection.remove(
<query>,
<justOne>
)
一般使用这两个参数。此外,你可以将其扩展到以下内容。
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>,
collation: <document>
}
)
writeConcern 和 collation 与我们上面讨论的 deleteMany() 相同。在这里,我们可以使用 query 代替过滤器。
要了解有关 MongoDB 中的 query 的更多信息,你可以访问以下 link。
如果我们在 remove 方法中传递一个空对象,它将从集合中删除所有文档。例如,假设你有一个 product 集合,并且想要删除价格低于 5 的所有产品。
然后命令将是:
db.products.remove(
{price:{ $lt: 5}}
)
如果我们输入这个命令,justOne 参数将默认为 false。现在,如果你只想删除同一查询的一个元素,命令将如下所示。
db.products.remove(
{price:{ $lt: 5}}, true
)
此方法返回一个名为 WriteResult 的对象,该对象具有以下参数。
WriteResult({ "nRemoved" : 10 })
它也有 writeError 和 writeConcern;这些与上面的 writeConcern 有关。
remove() 在更高版本的 MongoDB 中已被弃用。因此,在开发 NodeJS 应用程序时,你应该只使用 deleteOne 或 deleteMany。
要了解有关 remove() 的更多信息,请访问以下网站。
