Javascript 更新mongoose中具有多个条件的对象数组失败
我想把约翰的年龄定在10岁,但失败了。我必须做多个条件才能更具体Javascript 更新mongoose中具有多个条件的对象数组失败,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我想把约翰的年龄定在10岁,但失败了。我必须做多个条件才能更具体 [{ "date": "18/12/2010", "babies": [{ "id":1, "name": "James", "age": 8, }, { "id":2, "name": "John", "age": 4, }] }] 第一个条件是date,第二个条件是baby对象的数组,在本例中是id。上面的查询没有错误,也没有效果,我哪里做错了 我调试这个查询
[{
"date": "18/12/2010",
"babies": [{
"id":1,
"name": "James",
"age": 8,
}, {
"id":2,
"name": "John",
"age": 4,
}]
}]
第一个条件是date,第二个条件是baby对象的数组,在本例中是id。上面的查询没有错误,也没有效果,我哪里做错了
我调试这个查询
Babies.update({"date":date, 'babies.id': 1}, {'$set': {age:10}, function(err, response){
res.json(response);
})
它找不到正确的目标,也许这就是问题所在使用
{'$set':{'babies.$.age':10}}
而不是{'$set':{age:10}
Babies.find({'babies.id': 1}, function(err, response){
res.json(response);
})
positional$运算符标识数组中要更新的元素,而不显式指定元素在数组中的位置
有关详细信息,请参阅。在$set标志中,不要只传递字段值{age:10}的对象,而是以Array.index.field的格式传递该值。所以会变成这样-
Babies.update({"date":date, 'babies.id': 1},
{'$set': {
'babies.$.age':10
}
},
function(err, response){
res.json(response);
})
成功了!谢谢但如果我的约会对象是数组呢?我想在多个日期更新数据库。@JamieAnderson:请参阅
{ $set: { 'babies.$.age': 10 } }