Mongoose js:如何删除多个子文档?

时间:2013-01-21 04:24:57

标签: mongodb mongoose

我需要从集合

中删除子文档
tasks = item.tasks; // item is mongodb collection element, tasks is array of sub docs

tasks.forEach(function(task){
if (!task.finished)
     tasks.remove(task)
})

item.save()

之后我得到的情况是,并非所有带有完成== true的子文档都被删除。

还有其他更正确的方法来做我需要的吗?

1 个答案:

答案 0 :(得分:1)

您可以使用带有$pull运算符的update原子地执行此操作:

Items.update({_id: item._id}, {$pull: {tasks: {finished: true}}}, ...);

似乎你也可以使用MongooseArray#pull执行此操作,但是文档很薄,我从来没有想过如何使用它。