【问题标题】:MongoDB - Multi Level Nested Array Update() using Flask [duplicate]MongoDB - 使用 Flask 的多级嵌套数组更新()[重复]
【发布时间】:2019-09-21 06:49:56
【问题描述】:

我正在尝试使用 python-Flask 更新 MongoDB 上的数据,但我发现了一个错误。我已按照文档如何实现它,但错误仍然存​​在。谁能帮我解决这个问题?

@app.route('/updateData', methods=['POST'])
def updateData():
    dataList = mongo.db.warehouse
    old_Data = {
        "name": "Pulo Gebang Warehouse"
    }
    new_Data = {
        '$push':{"racks":{"rack columns":{"rack objects":{"items":{'$each':[{"index":4, "item":{"SKU": "HD 2179/3",
                      "arrivalDate": "2019-10-22",
                      "brand": "Philips",
                      "maxQty": 30,
                      "name": "Playstatus 10",
                      "qty": 10}}]}}}}}
    }
    dataList.update(old_Data, new_Data)
    return "Update Success!"

这是我的数据库

[
  {
    "floorRacks": [
      {
        "adjacentRackID": "A1",
        "floorColumn": [
          {
            "floorObjects": [
              {
                "index": 0,
                "item": {
                  "SKU": "HD 1179/3",
                  "arrivalDate": "2019-10-22",
                  "brand": "Philips",
                  "maxQty": 30,
                  "name": "Blender Super mewah",
                  "qty": 10
                }
              },
              {
                "index": 1,
                "item": "null"
              }
            ],
            "index": 0
          }
        ]
      }
    ],
    "name": "Pulo Gebang Warehouse",
    "racks": [
      {
        "code": "A",
        "rack_columns": [
          {
            "columnID": 0,
            "rack_objects": [
              {
                "items": [
                  {
                    "index": 0,
                    "item": {
                      "SKU": "HD 1179/3",
                      "arrivalDate": "2019-10-22",
                      "brand": "Philips",
                      "maxQty": 30,
                      "name": "Blender Super mewah",
                      "qty": 10
                    }
                  },
                  {
                    "index": 1,
                    "item": {
                      "SKU": "HD 1179/3",
                      "arrivalDate": "2019-10-22",
                      "brand": "Philips",
                      "maxQty": 30,
                      "name": "Blender Super mewah",
                      "qty": 10
                    }
                  },
                  {
                    "index": 2,
                    "item": "null"
                  },
                  {
                    "index": 3,
                    "item": {
                      "SKU": "HD 1189/3",
                      "arrivalDate": "2019-10-22",
                      "brand": "Philips",
                      "maxQty": 35,
                      "name": "Blender Super mewah Eksklusif",
                      "qty": 10
                    }
                  }
                ],
                "level": 0
              }
            ]
          }
        ]
      }
    ]
  }
]

这是完整的错误消息

pymongo.errors.WriteError: 美元 ($) 前缀字段 '$each' 在 'racks..rack columns.rack objects.items.$each' 对 存储。

【问题讨论】:

    标签: python arrays mongodb flask pymongo


    【解决方案1】:

    尝试将查询更改为以下内容:

      {
        "$push": {
          "racks.rack columns.rack objects.items": {
            "$each": [
              {
                "index": 4,
                "item": {
                  "SKU": "HD 2179/3",
                  "arrivalDate": "2019-10-22",
                  "brand": "Philips",
                  "maxQty": 30,
                  "name": "Playstatus 10",
                  "qty": 10
                }
              }
            ]
          }
        }
      }
    

    【讨论】:

    • 它说:pymongo.errors.WriteError: Cannot create field 'rack columns'
    • 能否将 fieldName 保存为 rack_columns 而不是 rack 列并尝试替换有空格的键
    • 它仍然说:pymongo.errors.WriteError: Cannot create field 'rack_columns'
    • 我将上面的问题连同我的 mongo 数据库一起更新,请检查一下,我可能会有所帮助
    • 你有多层嵌套数组,为什么更新不起作用你需要对相同的docs.mongodb.com/manual/reference/operator/update/…docs.mongodb.com/manual/reference/operator/update/positional使用arrayFIlters或位置运算符
    猜你喜欢
    • 2017-01-13
    • 2015-06-20
    • 2020-04-26
    • 2018-10-22
    相关资源
    最近更新 更多