2016-06-21 132 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"]}