mongoose更新子文档中数值错误
发布于 8 年前 作者 weizhiguang 2737 次浏览 来自 问答

使用mongoose连接mongodb

scheme:{
	sid:String,	
	members:[
		{uid:String,name:String, count:Number}
	]
}

值如下:

{ 	"_id" : ObjectId("576247c5cbf64140319f8265"), 
   "members" : [ 
   		{ "uid" : "5752a66b01f3b24eac9cbdd3", "name" : "xiaoliu", "count" : 38, "_id" : ObjectId("576247c5cbf64140319f8267") },
   		{ "uid" : "5752a66b01f3b24eac9cbdd2", "name" : "xiaowei", "count" : 35, "_id" : ObjectId("576247c5cbf64140319f8266") }
	],
	"__v" : 0	
}*****

在更新过程中,使用update进行更新,其中N是一个数值,表示在原来的值小于N时,更新成N

tbl.update(
	{_id:"576247c5cbf64140319f8265", "members.uid":"5752a66b01f3b24eac9cbdd2", "members.count":{$lt:N}},
	{$set:{ "members.$.count": N}},
	function(err, doc){
		......
	})
在更新过程中,发现给定的"members.uid":"5752a66b01f3b24eac9cbdd2"是其中的第二个成员的标识,但是更新结果却是跟新了第一个成员中的count值
求大神指点?错在哪里,query条件错了吗?怎么修改?多谢,多谢
1 回复

使用elemMatch,匹配多个条件,“members” : {$elemMatch:{uid: uid, count: {$lt:N}},打扰大家了

回到顶部