关于mongo 中数组的删除问题$pull为啥删除不了
发布于 8 年前 作者 moxiaobei2 4667 次浏览 来自 问答

model结构如下:

	var UserSchema = new Schema({
	  honor: [{"honorName":String,"honorImage":String}],//荣誉
	  company: { type: String },//所在公司
	  career:{type:String},//职业
	  isVip:{type:Number,default:0},//是否vip会员,默认非会员
	  isChecked:{type:Number,default:0},//是否审核
	  isDel:{type:Number,default:0},//是否删除
	  adminId:{type:String},//审核人员Id
	  intro:{type:String},//个人简介
	  roleId:{type:String},//属于什么权限 普通用户 管理员 还是超级管理员 跟权限有关
	  insertTime: { type: Date, default: Date.now },//插入时间
	  updatedTime: { type: Date, default: Date.now }//更新时间
	  });

更新honor这个数组的的controller如下:

	exports.updateHonor=function(data){
		console.log({$elemMatch:{"honorImage":data.honorImage}});
	 //{ $pull: { results: { $elemMatch: { score: 8 , item: "B" } } } }
	 return User.update({_id:data._id}, { $pull: { "honor":{$elemMatch:{"honorImage":data.honorImage}}}},{ multi: true });
	}

js中参数传递调用如下:

        var params={"_id":userId,"honorImage":“xxx”} ;//honorImage是字符串

问题来了=======================》 报Cannot apply $pull to a non-array value的错,查过

mongodb官方文档,貌似没有写错呀。请大神们帮帮忙。

2 回复

官方文档说的是:以下方法将不会起作用,这个以下就是你用的方法。不信你用软件翻译一下。

回到顶部