Node.js $pull不起作用

Node.js $pull不起作用,node.js,mongoose,Node.js,Mongoose,我想在删除am项目时从餐厅中删除该项目引用。我所做的是,我做了一个方法,从餐馆里取出那个东西,但它不起作用。我发现了类似MongoError的错误:无法将$pull/$pullAll修饰符应用于非数组 这是我的餐厅模式: var Restaurant = new Schema({ name: [languageData], description: [languageData], phone: String, email: String, items:

我想在删除am项目时从餐厅中删除该项目引用。我所做的是,我做了一个方法,从餐馆里取出那个东西,但它不起作用。我发现了类似MongoError的错误:无法将$pull/$pullAll修饰符应用于非数组

这是我的餐厅模式:

var Restaurant = new Schema({
    name: [languageData],
    description: [languageData],
    phone: String,
    email: String, 
    items: [{ type: ObjectId, ref: 'Item' }]
});

exports.restaurantModel = mongoose.model("Restaurant", Restaurant); 
这是我从餐厅提取物品的功能:

restaurantModel.update({'_id' : restId}, {'$pull': {'items': itemId}}, function(err,data){
    if (!err) {
        console.log("Refrence of Item is updated"+data);
    } else {
        console.log("Error : " +err);
    }
});

我不明白是什么问题。我甚至尝试使用multi:true和upsert:false,但仍然有一个错误。。请帮我解决这个问题。

请发布您的餐厅架构,并验证您尝试更新的特定餐厅文档在其
项中是否确实包含ObjectID数组
property.var Restaurant=new schema({name:[languageData],description:[languageData],电话:字符串,电子邮件:字符串,项:[{type:ObjectId,ref:'Item'}],});exports.restaurantModel=mongoose.model(“餐厅”,餐厅);请编辑您的问题,并将其作为格式良好的代码段。但是在你的评论中没有格式的阅读它,它看起来是正确的。我怀疑您的数据库中有一个与此架构不匹配的现有文档。请发布此文档的响应:
restaurandModel.find({u id:restId},function(err,data){console.log(data);})