我试图从一个看起来像这样的mongoose文档中删除Nodejs和Express的关键字:
{
name: "Instagram",
description: "Image sharing website",
keywords: [{name:"Image", value: 1}, {name:"sharing", value: 1}, {name:"website"}, {name:"Instagram", value:5}, {name:"application", value: 2}]
}
这是我的更新查询的一部分似乎问题(如果有很多关键字,它不会正确删除关键字,尽管它已经使用了很少的关键字工作了几次):
Model.findOne({_id:req.body.id}, function(err,doc){
for(var i = 0; i < doc.keywords.length; i++){
if(doc.keywords[i].value == 1){
doc.keywords.splice(doc.keywords[i], 1); //does nothing
doc.save()
console.log(doc.keywords[i]) //Shows the correct keywords to be deleted.
}
};
})
Splice不适用于对象数组。有关可选解决方案,请参阅Remove Object from Array using JavaScript。否则我会建议一个不同的方法,你为什么不根据你的需要过滤关键字,如:
doc.keywords = doc.keywords.filter((key) => key.value === 1);