我有这样的猫鼬模式:
{
......
project: [
{
Name: String,
Criteria:[
{
criteriaName:String,
}
]
}
]
......
}
我想根据对象ID删除项目数组中的条件数组的对象之一
我尝试了以下代码
criteria.findOneAndUpdate({
"_id": uid,
},{ $pull: { "project.Criteria": { _id: cid } } }, (err) => {
......
}
但是这无法正常工作,它说“无法使用(project.Criteria)的部分(Criteria)遍历元素”
答案 0 :(得分:0)
您是否需要对数据库进行一次查询?如果没有,以下解决方案可能对您有用:
criteria.findOne({ _id: uid })
.then((obj) => {
// Filter out the criteria you wanted to remove
obj.project.Criteria = obj.project.Criteria.filter(c => c._id !== cid);
// Save the updated object to the database
return obj.save();
})
.then((updatedObj) => {
// This is the updated object
})
.catch((err) => {
// Handle error
});
对不起,.then / .catch是否令人困惑。如有必要,我可以使用回调进行重写,但是我认为这看起来更干净。希望这会有所帮助!