搜尋

首頁  >  問答  >  主體

問下 MongoDB 中有沒有批次查找文件的同時然後更新文件指定欄位值的功能?

現在有一個需求是使用 MongoDB 查找文檔的同時將文檔中的字段給更新掉,也就是用一個命令完成查找以及更新(原子性)。
Mongo 中對於單一文件是有類似的方法的,例如 FindAndModify 尋找並更新的操作,並且是原子性的,但是只作用於單一文件。
問下有沒有可以實現查找多個文檔並且對應的更新文檔的欄位的操作。

为情所困为情所困2867 天前712

全部回覆(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
  • 取消回覆