mongodb $pull 为什么不能删除
数据是这样的
{
"_id" : ObjectId("581472c3c65f3a1b3412f147"),
"name" : "这是一级目录-----1",
"englishName" : "zzzzz",
"stage" : "first",
"children" : [
ObjectId("581472f1c65f3a1b3412f149"),
ObjectId("581472f4c65f3a1b3412f14a")
],
"type" : "group",
"order" : 50,
"__v" : 0
}
我想删除children 的第二项,所以使用
var _id = req.fields._id; //581472f4c65f3a1b3412f14a
var parent_id = req.fields.parent; //581472c3c65f3a1b3412f147
var tmp = [];
db.Group.update({ children: parent_id }, { $pull:{children:_id} },function(err,result){
console.log(result);
cb(err,result);
})
但是没用的,把{ $pull:{children:_id} }
换成 { $pull:{children:ObjectId(_id)} }
提示Object
不是一个函数。
3 回复
如果你用mongoose,可以这样把_id转换成ObjectId
_id = mongoose.Types.ObjectId(_id)
自己解决方式是储存_id再数组时候把其转为字符串即可
在实际项目中类似于这样的,我不确定我要删除那个,只能是根据条件来删除,那我的处理是:
var a = [];
children.forEach(t => {
if(t (满足继续留下来的条件) ){
a.push(t);
}
})
.update({_id: mongoose.ObjectId(_id)},{children: a})