0

我需要从集合中删除子文档

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()

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

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

4

1 回答 1

1

您可以使用updatewith$pull运算符以原子方式执行此操作:

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

似乎您也可以这样做,MongooseArray#pull但是上面的文档太薄了,我从来没有弄清楚如何使用它。

于 2013-01-21T17:44:37.350 回答