我正在尝试使用mongoose和nodejs更新mongodb模式数组中对象的值。
我的模特是:
{
"_id": ObjectId("557eecd687cff9281040efe5"),
"products": [
{
"productId": "6849500",
"qty": 2,
"_id": ObjectId("557eef13101aef4c101af513")
}
]
}
我想更新"产品"数组"数量"价值过滤" productId"
答案 0 :(得分:1)
尝试以下更新,该更新使用 $
positional operator 标识要更新的数组中的元素,而不显式指定数组中元素的位置。由于位置 $
运算符充当与查询文档匹配的第一个元素的占位符,因此数组字段必须显示为查询文档的一部分,因此您需要products
查询中的数组字段:
db.collection.update(
{"products._id": ObjectId("557eef13101aef4c101af513")},
{"$set": {"products.$.qty": 8} }
)
答案 1 :(得分:0)
您必须使用运算符$
。
ModelName.update({
//find the document
},{
products.$.qty : //value
});
<强> ALITER 强>
也许你必须制作一个新对象
{
"productId": "6849500",
"qty": //some new value,
"_id": ObjectId("557eef13101aef4c101af513")
}
然后更新文档,
我个人认为第二种方法会更安全可靠。