我用find()方法調用元素,並且比我想要更新所有內容。例如:我如何更新MongoDB中沒有ID的數組中的所有對象
db.collection.find().limit(10).update({$set: {'column' : 'value'}});
我該如何解決這個問題?
我用find()方法調用元素,並且比我想要更新所有內容。例如:我如何更新MongoDB中沒有ID的數組中的所有對象
db.collection.find().limit(10).update({$set: {'column' : 'value'}});
我該如何解決這個問題?
如果您想申請更新到集合中的每個文檔,使用{multi:true}
選項
db.collection.update({},{$set: {'column' : 'value'}},{multi:true});
有關更多詳細信息,請參閱collection.update
但是,如果您想更新選定數量的文件,您將需要更長的路線。
db.collection.find().limit(10).forEach(function(o){
o.column = some_value; // replace some_value with real one.
db.collection.update({_id:o._id},o);
});
默認情況下,它僅更新找到的前1個文檔。您需要添加multi = true作爲update()來更新全部選項。不幸的是,更新()沒有限制選項,以便您可以將其限制在10
你可能要做找到()的限制,然後再像在這篇文章中提到的單獨更新每個文檔:
感謝答覆,但我得到這個錯誤:db.collection.find(...)限制(...)更新不是一個函數: –
沒有,它不工作的方式。對不起,我粘貼了你的命令。現在試試。 – Saleem
@saleem,OP正在要求限制多重更新。您在那裏的更新將更新集合中的每個文檔,並且不正確的語法,因爲第一個參數應該是查詢選擇器,而不是更新 – Ben