2017-02-15 160 views
2

我正在尋找一種方法來使用mongoose一次更新多個文檔,並返回所有已修改的文檔。我試着在update()中設置multi:true。它正在更新所有匹配的文件,但沒有任何返回。然後我嘗試了findOneAndUpdate()。即使有許多匹配的文件,它也只更新和返回一個文件。是的,函數名稱本身告訴,它只會更新一個,但我仍然嘗試過。我無法在findOneAndUpdate()中設置像multi:true這樣的選項。如何做呢?在此先感謝更新多個文檔並返回所有更新的文檔

回答

2

目前我不認爲它可能在MongoDB中更新多個文檔,並在同一個查詢中返回所有更新的文檔。

在貓鼬,所述findOneAndUpdate()基於MongoDB中的天然findAndModify()方法。

如果檢查findAndModify()方法的官方documentation,其指出 -

的findAndModify指令修改,並返回一個單一的文件。

儘管查詢可能會匹配多個文檔,findAndModify將只選擇一個文檔進行修改。

因此,您無法使用findAndModify更新多個文檔。在另一方面

update()updateMany()方法更新許多文件與multi標誌,但它只返回WriteResult它看起來像這樣 -

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 
+1

感謝@Jyotman澄清。然後我會去做兩個不同的查詢。 – RaR