2013-01-21 3 views
0

이 나는 ​​상황을 얻는 그 후 수집몽구스 js : 여러 하위 문서를 제거하는 방법?

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

에서 하위 문서를 제거해야 할 때 == 사실이 제거 완료와 모든 하위 문서.

내가 필요로하는 다른 올바른 방법이 있습니까?

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

당신은 또한 MongooseArray#pull이 할 수있는 것 같지만의 문서는 내가 그것을 사용하는 방법을 알아 낸 적이 너무 얇은 :

답변

1

당신은 원자 적 $pull 운영자와 함께 update를 사용하여이 작업을 수행 할 수 있습니다 .

+1

안녕하세요. 실제로 MongoseArray.pull을 사용하는 방법을 만들었습니다. 객체 목록 (배열은 아니지만 목록)이 필요합니다. 따라서 apply 배열을 사용하는 배열이있는 경우 apply : tasks.pull.apply (tasks, tasks.some function (task) {return task.finished}) – WHITECOLOR

+0

일부 필터가 아닙니다. – WHITECOLOR

관련 문제