对于如下所示的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数组中定位更新的确切索引?
请注意:我的搜索工作正常并返回应更新的文档。
答案 0 :(得分:1)
$
位置更新运算符表示每个文档中第一个匹配的数组元素的索引,因此您可以在update
调用中使用它,如下所示:
db.stock.update(
{ 'twoWheelers.engine': 'honda'},
{ $inc: { 'twoWheelers.$.qty': 1 } },
{ multi: true}
)