有没有办法用 MongoDB 替换Many()?

sta*_*tti 6 database mongodb nosql

假设我有一个集合和一个匹配该集合中三个文档的过滤器:A、B 和 C。

我正在寻找一种操作,可以自动用我指定的另一组文档替换这些文档。本质上:

collection.find(filter) -> {A,B,C}
collection.replaceMany(filter, {C,D})
collection.find(filter) -> {C,D}
Run Code Online (Sandbox Code Playgroud)

A和B已被删除,D已被插入。C可能已经改变了。

MongoDB中有这样的操作吗?如果不是,你将如何实施这样的操作?

bar*_*ini 3

在您的示例中,您将用 2 个文档替换 3 个文档。所以它不是替换文档,而是根据某些标准删除和插入文档。这里的删除和插入是分开的操作。这两个操作都在集合上获取 mongodb 写锁,但正如我之前所说,这些是单独的操作。

我相信您担心的是删除但无法插入新文档。您的解决方案是使用批量写入操作。或者您始终可以在应用程序级别编写回滚机制。

  • 好吧,这就是我所期待的。我正在寻找的操作并不存在,但可以通过组合现有操作来创建。感谢您的回答。 (2认同)