问下 MongoDB 中有没有批量查找文档的同时然后更新文档指定字段值的功能?

现在有一个需求是使用 MongoDB 查找文档的同时将文档中的字段给更新掉,也就是用一个命令完成查找以及更新(原子性)。
Mongo 中对于单个文档是有类似的方法的,比如 FindAndModify 查找并更新的操作,并且是原子性的,但是只作用于单个文档。
问下有没有可以实现查找多个文档并且相应的更新文档的字段的操作。

阅读 4.7k
2 个回答

一、MongoDB中原子性:

1、针对单一文档都是原子性的,FindAnyModify只操作一个文档,所以是原子性的;

2、针对多个文档的操作,每一次对单个文档的操作实现了原子性,但是整个操作不是原子性的,在操作过程中可能有来自其他的针对其中文档的操作。

但是在大部分的场景下,单一文档的原子性已经满足要求了;

如果需要对多个文档的操作实现原子性,需要配合自己的代码/设计来实现了。

二、针对您的表述的需求,其实用update的multi选项,或者直接使用updateMany就可以达成。

db.collection.updateMany()

db.collection.update(,{multi : true})

供参考。

Love MongoDB! Have Fun!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进