Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误的Data explorer Azure批处理->python SDK上载转义的json?_Python_Mongodb_Azure_Pymongo - Fatal编程技术网

错误的Data explorer Azure批处理->python SDK上载转义的json?

错误的Data explorer Azure批处理->python SDK上载转义的json?,python,mongodb,azure,pymongo,Python,Mongodb,Azure,Pymongo,我正在使用PyMongo Python 3.6与连接到Azure上的DocumentDB的MongoDB API进行接口。在更新mongo DB中现有的_ID时,我得到了一个明显可见的错误,我更新的json bson?他逃走了。这在Azure数据资源管理器中发生。见图 但是,当我通过客户端查询数据库时,结果似乎是有效的,并且正常工作。我用来上传数据的代码片段如下所示: def upsert_data(self, collection: str, data: Any): bulk_upda

我正在使用PyMongo Python 3.6与连接到Azure上的DocumentDB的MongoDB API进行接口。在更新mongo DB中现有的_ID时,我得到了一个明显可见的错误,我更新的json bson?他逃走了。这在Azure数据资源管理器中发生。见图

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

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._数据库[collection]是在init中创建的客户端

item type:dict的结构大致如下所示:

   {
       'varA': 0,
       'varB': 12,
       'varC': [
           {'var2': 23}, 
           {'var2': 24}]
    }
有没有人能告诉我我做错了什么?这是我在阅读文档后提出的解决方案。我对这方面还不太熟悉。任何意见都将不胜感激


提前谢谢

我不知道你所谓的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 ")
更新文件

有关可与bulk_write方法一起使用的更多操作,请参见文档链接: