我正在尝试从数组中删除一个条目,并通过执行$ 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 :(得分:0)
我有类似的问题,这对我有用。我所要做的就是在ObjectIds数组上调用.remove,然后传入我想删除的id,这样就可以了。
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();
});