Javascript 更新mongoose中具有多个条件的对象数组失败

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。上面的查询没有错误,也没有效果,我哪里做错了 我调试这个查询

我想把约翰的年龄定在10岁,但失败了。我必须做多个条件才能更具体

[{
  "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 } }