【问题标题】:bulkWrite - TypeError: Cannot create property '$set' on number '0' at applyTimestampsToUpdate - mongoose or mongodbbulkWrite - 类型错误:无法在 applyTimestampsToUpdate 的数字 '0' 上创建属性 '$set' - mongoose 或 mongodb
【发布时间】: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


【解决方案1】:

我在尝试更新模型架构中不存在的字段时遇到了同样的错误。

可以通过使用<model>.collection.bulkWrite 或将字段添加到架构来解决问题(至少这两个操作在我的情况下都有效)。

【讨论】:

  • 我今天遇到了同样的问题!非常感谢您的回答。效果很好!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 2021-05-28
  • 2022-11-10
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多