node.js - bulkWrite - 类型错误:无法在 applyTimestampsToUpdate 的数字 '0' 上创建属性 '$set' - mongoose 或 mongodb
问题描述
我尝试使用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",
}
]
蒙戈数据库数据:
[
{
"_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
}
]
},
...
]
解决方案
我在尝试更新模型模式中不存在的字段时遇到了同样的错误。
该问题可以通过使用<model>.collection.bulkWrite
或将字段添加到架构来解决(至少这两个操作在我的情况下都有效)。
推荐阅读
- r - 如何在 ggplot 图的图例中添加额外的符号?
- function - 类中的按钮不调用函数
- python - 在 Seaborn 中添加自定义条形图注释
- reportbuilder - 在 MS Report Builder 中显示前一周的日期间隔
- r - 如何根据行顺序绘制变量
- powershell - 字体文件 Powershell/.NET 扩展属性
- python - 如何使用 ManyToManyField 中的公共 ID 数量注释查询集
- c# - 如何从嵌套的 JSON 数组中按键获取值?
- python - 从 Github 自动更新您的文件
- python - JSONDecodeError:期望值:使用有效 json 时的第 1 行