col*_*ore 5 mongodb mongodb-query
我想在集合中添加(+1)一个qty字段,其中包含以下文档:
{"_id": { "$oid" : "531cc2410b4ebf000036b2d7" },
"name": "ALMACEN 2",
"items": [
{
"id": "111111",
"marca": "BJFE",
"tipo": 0,
"color": "GDRNCCD",
"mano": 1,
"modelo": 0,
"qty": 1
},
{
"marca": "BJddFE",
"tipo": 0,
"color": "GDffRNCCD",
"mano": 1,
"modelo": 0,
"qty": 3
},
{
"marca": "BJeeFE",
"tipo": 0,
"color": "GDRNCCD",
"mano": 1,
"modelo": 0,
"qty": 9
} ] }
Run Code Online (Sandbox Code Playgroud)
我想在文档中使用_id = 531cc2410b4ebf000036b2d7和内部项目添加+1到qty,id = 1111.
可能吗?
编辑:
用这个代码
warehouses.update(
{_id: new ObjectID(warehouseId)},
{"$inc": { "items.$.qty": -1 }},
function (e, docs) {
if (e) {
error(e);
return;
}
success(docs);
});
Run Code Online (Sandbox Code Playgroud)
我有错误:
如果没有包含数组的相应查询字段,则无法应用位置运算符
最后这个工作:
warehouses.update({_id: new ObjectID(warehouseId), "items.id": itemId}, {"$inc": { "items.$.qty": -1 }}, function (e) {
if (e) {
error(e);
return;
}
success();
});
Run Code Online (Sandbox Code Playgroud)
db.collection.update(
{ _id: <matching id>, "items.id": 1111 },
{ "$inc": { "items.$.qty": 1 } }
)
Run Code Online (Sandbox Code Playgroud)
本$场比赛你元素的索引匹配您更新的查询部分.这允许语句的更新部分知道要处理的数组中的哪个元素.
| 归档时间: |
|
| 查看次数: |
7236 次 |
| 最近记录: |