搜索

首页  >  问答  >  正文

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

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

为情所困为情所困2788 天前663

全部回复(2)我来回复

  • phpcn_u1582

    phpcn_u15822017-05-02 09:27:48

    mongoose更新,可以批量操作,update的multi属性设置为true,http://www.nonb.cn/blog/nodej...

    回复
    0
  • 漂亮男人

    漂亮男人2017-05-02 09:27:48

    一、MongoDB中原子性:

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

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

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

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

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

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

    供参考。

    Love MongoDB! Have Fun!

    回复
    0
  • 取消回复