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()
的更多信息,请访问以下网站。