2015-12-18 9 views
0

Я пытаюсь удалить запись из массива и по существу переместить ее в другой массив в той же коллекции, выполнив $ pull и $ push. $ push работает нормально, как ожидалось, но $ pull не удаляет элемент массива.

Это код, который у меня есть. Любая помощь будет оценена по достоинству. Заранее спасибо.

var delete_this = save.one; 

X.findOne({ 
    "_id": new ObjectId(y) 
}, function(err, doc){ 

    var z; 
    for (var i = 0; i < doc.requests.length; i++){ 
     if (doc.requests[i].userId == delete_this){ 
      z = doc.requests[i]; 
      break; 
     } 
    } 

    doc.requests.pull({ "userId": delete_this }); 
    doc.terminate.push(request); 
    doc.save(); 
}); 

Это фактический объект внутри массива, который я хочу удалить. Должно быть ясно, что еще больше.

"requests" : [ 
     { 
      "userId" : "56705fa2e7cd4c13519e08e5", 
      "userRating" : null, 
      "userImage" : "56705fa2e7cd4c13519e08e5", 
      "name" : "Sunil" 
     } 
    ], 

ответ

0

У меня была аналогичная проблема, и это сработало для меня. Все, что мне нужно было сделать, это вызвать .remove в массиве ObjectIds и передать идентификатор, который я хотел удалить, и это сделало трюк.

doc.requests.remove(idToRemove); 

Вы можете обновить свой код так и попробуйте его.

X.findOne({ 
    "_id": new ObjectId(y) 
}, function(err, doc){ 
    //I'm not sure what z is doing.... 
    var z; 
    for (var i = 0; i < doc.requests.length; i++){ 
     if (doc.requests[i].userId == delete_this){ 
      z = doc.requests[i]; 
      break; 
     } 
    } 
    //this should be all you need 
    doc.requests.remove(delete_this); 
    doc.terminate.push(request); 
    doc.save(); 
}); 
+0

Большое спасибо за ответ. Это все еще не работает для меня. Я обновил вопрос с поддоку mongo, который хочу удалить. Не могли бы вы взглянуть и подтвердить, правильно ли я поступаю? Еще раз спасибо. – amit

Смежные вопросы