错误的数据浏览器Azure批处理-> python SDK上传转义的json?

2024-10-06 11:29:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用PyMongo(python3.6)与一个mongodbapi接口,该API连接到一个托管在Azure上的DocumentDB。当更新mongodb中现有的id时,我得到一个明显可见的错误,即我更新的json(bson?)已被转义。这发生在Azure数据资源管理器中。请看图片

enter image description here

当我通过客户端查询数据库时,结果似乎是有效的,并且正常工作。我用来上传数据的代码片段如下所示:

def upsert_data(self, collection: str, data: Any):
    bulk_updates = []
    coll = self._database[collection]

    for item in data:
        bulk_updates.append(
            UpdateOne(
                {"_id": ObjectId(item.pop("_id"))},
                {"$set": item}))

    try:
        coll.bulk_write(bulk_updates)
    except BulkWriteError as bwe:
        pprint.pprint(bwe.details)

self.\u数据库[collection]是在init中创建的客户机

项目的结构(类型:dict)大致如下所示:

   {
       'varA': 0,
       'varB': 12,
       'varC': [
           {'var2': 23}, 
           {'var2': 24}]
    }

有没有人能告诉我我做错了什么?这是我在阅读文档后提出的解决方案。我对这方面还不太熟悉。任何意见都将不胜感激

提前谢谢


Tags: 数据selfiddatabulkitemazurecollection
1条回答
网友
1楼 · 发布于 2024-10-06 11:29:31

我不知道你所谓的json转义是什么意思。被掩盖或内容被清空?你的截图看起来也不完整

我按照你的代码尝试批量更新数据,它工作得很好

请参考以下代码片段:

import pymongo
from pymongo import UpdateOne

uri = "your connect string"
client = pymongo.MongoClient(uri)

bulk_updates = []

for doc in coll.find({}):
    bulk_updates.append(UpdateOne({'_id': doc.get('_id')},{"$set": {"test":"add"}}, upsert=False))

print(bulk_updates)

db.coll.bulk_write(bulk_updates)

print("update success ")

更新文档

enter image description here

有关可与bulk\u write方法一起使用的更多操作,请访问文档链接:http://api.mongodb.com/python/current/api/pymongo/operations.html

相关问题 更多 >