Javascript 什么';关于mongodb中重复$addtoset的s关键字mongoskin(我读了一点英语)
对不起,我找不到答案,也看不懂英语 What's关键字可以找到关于以下示例代码的答案Javascript 什么';关于mongodb中重复$addtoset的s关键字mongoskin(我读了一点英语),javascript,node.js,mongodb,express,mongoskin,Javascript,Node.js,Mongodb,Express,Mongoskin,对不起,我找不到答案,也看不懂英语 What's关键字可以找到关于以下示例代码的答案 for(var value in row){ db.collection('testdb').update({_id:'id'},{$addToSet:value}, { upsert: true },function(err){} ) value.emp
for(var value in row){
db.collection('testdb').update({_id:'id'},{$addToSet:value},
{ upsert: true },function(err){}
)
value.empty();
}
我不知道为什么我的代码不能工作
testdb: { "_id" : "id", "v" : [v1], "p" : [ p1] }
重复更新后
{ "_id" : "id", "v" : [v1,p2], "p" : [ p1,p2] }
但应该是
{ "_id" : "id", "v" : [v1,v2], "p" : [ p1,p2] }
致Neil Lunn
row count = 2 ;
row[0] = { "v" : [v2] }
row[1] = { "p" : [p2] }
法里德·努里·内沙特
app.post('index',function(req,res){
var doc =[];
var d ={};
var e ={}
for(var value in req.body){
d[value]=doc;
e['$each']=doc;
d[value]=e;
db.collection('testdb').update({_id:req.body.field},{$addToSet:d},
{ upsert: true },function(err){})
doc=[];//clear doc
d={};//clear d
}
}
// req.body.count = 2
// req.body[0] = { "v" : [v2] }
// req.body[1] = { "p" : [p2] }
}
我认为你发布的代码没有复制这个问题。但是从
p
和v
数组都获得了最后一个值这一事实来看,看起来您正在for循环的回调中运行update方法,因此当运行update方法时,键已经更改为最后一个键。您可以阅读此问题中有关此问题的更多信息:
我建议您尝试使用for(req.body中的var值){
更改使用Object.keys:
Object.keys(req.body).forEach(function (value) {
// Do whatever you do inside the loop in here.
});
这将捕获
value
参数,并且在下一次迭代中不会更改。我已经在a中解释了这一点。您作为value
传递的是什么?您在这里有两个数组(集合),并且没有向我们显示语句的这一部分。这里没有足够的信息。如果行是[{v:[v2],p:[p2]}]
那么这里没有问题。请共享更多代码。发布一个可以在本地计算机上运行的示例来说明问题。非常非常感谢,这个问题让我困惑了很久好的!很高兴见到你!