更新mongo文档中的数组内的对象

时间:2014-09-03 17:30:24

标签: mongodb

对于如下所示的mongo集合:

{
  {
    site: 'one',
    twoWheelers: [
         { engine: 'honda',  qty:5 }
         { engine: 'yamaha', qty:6 }     
        ],
    fourWheelers: [ ..],
    eightWheelers: [ .. ]
  },
  { 
    site : 'two',
    twoWheelers: [
         { engine: 'honda',  qty:13 }
         { engine: 'yamaha', qty:16 }     
        ],
    fourWheelers: [ ..],
    eightWheelers: [ .. ]
  },
  {
    site: 'three',
    twoWheelers: [
         { engine: 'honda',  qty:2 }
         { engine: 'yamaha', qty:10 }     
        ],
    fourWheelers: [ ..],
    eightWheelers: [ .. ]
  },
}

我正在编写一个查询,以查找所有拥有' honda'引擎并将其数量更新为

我的更新查询如下所示:

db.stock.update(
{ 'twoWheelers.engine' : 'honda'},
{ /*update statement here */ },
{ multi: true}
)

让我感到困惑的是如何在twoWheeler数组中定位更新的确切索引?

请注意:我的搜索工作正常并返回应更新的文档。

1 个答案:

答案 0 :(得分:1)

$位置更新运算符表示每个文档中第一个匹配的数组元素的索引,因此您可以在update调用中使用它,如下所示:

db.stock.update(
  { 'twoWheelers.engine': 'honda'},
  { $inc: { 'twoWheelers.$.qty': 1 } },
  { multi: true}
)