[{
"date": "18/12/2010",
"babies": [{
"id":1,
"name": "James",
"age": 8,
}, {
"id":2,
"name": "John",
"age": 4,
}]
}]
我想将约翰的年龄设定为10但却失败了。我必须做多个条件才能更明确。
Babies.update({"date":date, 'babies.id': 1}, {'$set': {age:10}, function(err, response){
res.json(response);
})
第一个条件是日期,第二个条件是婴儿的对象数组,在这种情况下它是id。以上查询没有错误也没有效果,我哪里做错了?
我通过执行此查询进行调试
Babies.find({'babies.id': 1}, function(err, response){
res.json(response);
})
它无法找到正确的目标,也许是问题所在
答案 0 :(得分:0)
使用{'$set': {age:10}}
代替Babies.update({"date":date, 'babies.id': 1},
{'$set': {
'babies.$.age':10
}
},
function(err, response){
res.json(response);
})
。
npm run dev
位置$运算符标识要更新的数组中的元素,而不显式指定元素在数组中的位置。
有关详细信息,请参阅MongoDB Positional Operator。
答案 1 :(得分:0)
而不是仅在$ set标志中传递字段值{age:10}的对象,而是以Array.index.field的格式传递值。这样就变成了这样-
{ $set: { 'babies.$.age': 10 } }