mongodb找到对象和更新的数组

时间:2016-12-28 17:17:16

标签: node.js mongodb express mongoose

我在db

中有这种格式
[{
  "birth-date": "18/12/2010",
  "babies": [{
    "id":1,
    "name": "James",
    "age": 8,
  }, {
    "id":2,
    "name": "John",
    "age": 4,
  }]
}]

所以我想把詹姆斯的名字更新为其他东西。我做了

Babies.update({"birth-date":date, 'babies.id': 1}, {'$set': {'babies.$.name':"something else"}}, function(err, response){
        res.json(response);
  })

它返回ok:0第二个选择器('babies.id': 1)出错了。

2 个答案:

答案 0 :(得分:0)

您可以使用auto obj1 = Create<1>(); auto obj2 = Create<2>(); // etc 选择器进行此次通话;

$and

答案 1 :(得分:-1)

要根据某些数组属性匹配文档,您需要 $ elemMatch

Babies
  .update({ babies: {$elemMatch:{id : 1}} }, {'$set': {name:"something else"}, function(err, response){
        res.json(response);
  })

检查一下: https://docs.mongodb.com/v3.2/reference/operator/query/elemMatch/