2016-06-21 165 views
0

我的模式有數組屬性。我想修改每個文檔的數組屬性。例如,從數組中刪除一些元素。什麼是實現這種功能的最佳方式?貓鼬更新所有文檔

示例: 用戶模式具有包含書名的數組屬性。有一刻我想刪除每個用戶的某些書名。我想爲每個用戶實現沒有功能的情況。

user.books = _.without(user.books, "SomeBookName1", "SomeBookName2", "SomeBookName3") //Underscore style:) 
+0

我發現類似的問題的答案: [鏈接](http://stackoverflow.com/questions/26689132/update-multiple-documents-by-providing-documents-in-body-mongoose-mongodb) 但他們硬編碼的屬性值。在我的情況下,這個屬性會不同。 –

+0

儘可能使用原子更新數組運算符:https://docs.mongodb.com/manual/reference/operator/update/#array。但是你的問題太廣泛了,你可以編輯它來顯示你正在嘗試做的特定更新嗎? – JohnnyHK

+0

@JohnnyHK我更新了問題) –

回答

2

感謝@JohnnyHK的幫助。來自文檔的$pull函數幫助了我。

Model.update = function ({}, {$pull : {books: "someBookName" } }, {multi: true}, function(err) { //callback }); 

或刪除幾個項目有$pullAll

$pullAll: {books: ["someBookName1", "someBookName2"]}