【发布时间】:2019-12-20 18:44:43
【问题描述】:
我试过 bulkWrite 查询一次更新多个不同的文档,客户同时订购多个产品更新产品数量详细信息。我找到了bulkWrite updateOne 查询。此批量数组一次更新。
代码:
同时更新 键值 update: { $set: { 'colorName' : null} } 工作正常。但使用嵌套数组键值update: { $set: { 'sizes.$.qty' : data.qty} } 不起作用。
poductModel.bulkWrite(arrayValue.map((data) => ({
updateOne: {
filter: { _id: data.productQtyDetailsId, 'sizes.name' : data.sizeName },
update: { $set: { 'sizes.$.qty' : data.qty} }
//working fine
//update: { $set: { 'colorName' : null} }
}
}))).then(err,result => {
})
JSON 数据:
[
{
"qty": 8,
"productId": "5d31567ea23d120f087a9aaf",
"productQtyDetailsId": "5d316373b356873504e78be7",
"sizeName": "4",
"colorName": "green",
},
{
"qty": 5,
"productId": "5d31567ea23d120f087a9aaf",
"productQtyDetailsId": "5d31567ea23d120f087a9ab1",
"sizeName": "4",
"colorName": "blue",
}
]
Mongo DB 数据:
[
{
"_id" : ObjectId("5d316373b356873504e78be7"),
"colorName" : "green",
"productId" : ObjectId("5d31567ea23d120f087a9aaf"),
"sizes" : [
{
"name" : "4",
"qty" : 5.0,
"price" : 1500.0
},
{
"name" : "5",
"qty" : 6.0,
"price" : 1600.0
},
{
"name" : "6",
"qty" : 7.0,
"price" : 1700.0
}
]
}
{
"_id" : ObjectId("5d31567ea23d120f087a9ab1"),
"colorName" : "blue",
"productId" : ObjectId("5d31567ea23d120f087a9aaf"),
"sizes" : [
{
"name" : "4",
"qty" : 5.0,
"price" : 1500.0
},
{
"name" : "5",
"qty" : 6.0,
"price" : 1600.0
},
{
"name" : "6",
"qty" : 7.0,
"price" : 1700.0
}
]
},
...
]
【问题讨论】:
-
我无法重现这一点。除了您使用
then()不应该那样 并假设arrayValue是您发布的JSON 数据bulkWrite工作正常。
标签: node.js mongodb mongoose mongodb-query bulkupdate