Python 如何在已有的mongodb中插入新元素,并从json文件中更新已有的文档?

Python 如何在已有的mongodb中插入新元素,并从json文件中更新已有的文档?,python,json,mongodb,Python,Json,Mongodb,我对python和mongodb有一个问题。我有一个现存的mongodb wh和一个集合basicdata。我想通过键“whID”将json文件合并到现有的mongodb中。我的代码如下: import json, glob, codecs from pymongo import MongoClient directory = 'json/test/211.json' client = MongoClient("localhost", 27017) db = client.wh jsonFi

我对python和mongodb有一个问题。我有一个现存的mongodb wh和一个集合basicdata。我想通过键“whID”将json文件合并到现有的mongodb中。我的代码如下:

import json, glob, codecs
from pymongo import MongoClient

directory = 'json/test/211.json'
client = MongoClient("localhost", 27017)
db = client.wh

jsonFiles = glob.glob(directory)
for file in jsonFiles:
     fwhID = file[10:13] #get the file name as whID in a stupid way
     with codecs.open(file,'r',errors='ignore',encoding='utf-8') as json_file:
          json_data = json.load(json_file)
          db.basicdata.update({"whID": fwhID },json_data, {upsert: true})
          print("Processing Json_data: ",file)
     json_file.close()
但我收到了如下错误消息:

    db.basicdata.update({"whID": fwhID },json_data, {upsert: true})
NameError: name 'true' is not defined

有人能帮我吗?谢谢

您正在使用python连接到Mongodb。在python中true是
true
,在mongodb中是
true

改变

db.basicdata.update({"whID": fwhID },json_data, {upsert: true})


我只修改了一行代码,如下所示: 原创的

db.basicdata.update({"whID": fwhID },json_data, {upsert: true})
改为

db.basicdata.update( {"whID" : fwhID },{"$set":json_data}, upsert= True)
那就行了! update({“whID”:fwhID},{“$set”:json_data},upsert=True)
{“$set”:json_data}将把dict放入现有文档中,并匹配关键字“whID”。

在python中,true应该用大写字母
true
编写,谢谢您的回答。但我收到了一条新的错误消息:NameError:name'upsert'未定义??我该怎么办?非常感谢你。我修改我的代码,它工作!!但我发现另一个问题。我希望将此json文件插入到现有文档中,但我的代码将创建另一个新对象。那是因为你不能满足我的需要!是否有任何方法可以满足我的需要?这就是upsert所做的,如果找不到匹配项,它将创建一个新文档:
db.basicdata.update( {"whID" : fwhID },{"$set":json_data}, upsert= True)