我想在包含这样文档的集合中添加 (+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
} ] }
我想在 _id = 531cc2410b4ebf000036b2d7 的文档和 id=1111 的内部项目中为 qty 添加 +1。
这可能吗?
编辑:
使用此代码
warehouses.update(
{_id: new ObjectID(warehouseId)},
{"$inc": { "items.$.qty": -1 }},
function (e, docs) {
if (e) {
error(e);
return;
}
success(docs);
});
我有错误:
cannot apply the position operator without a corresponding query field containing an array
终于成功了:
warehouses.update({_id: new ObjectID(warehouseId), "items.id": itemId}, {"$inc": { "items.$.qty": -1 }}, function (e) {
if (e) {
error(e);
return;
}
success();
});
最佳答案
是的。只需使用 $inc和 positional $
运算符(operator):
db.collection.update(
{ _id: <matching id>, "items.id": 1111 },
{ "$inc": { "items.$.qty": 1 } }
)
$
匹配您在更新的查询部分匹配 的元素的索引。这允许语句的更新部分知道要寻址数组中的哪个元素。
关于mongodb - 在 MongoDB 中通过 id 更新文档中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22356110/