【发布时间】:2021-05-24 08:00:30
【问题描述】:
我有一个需要使用 python 插入 MongoDB 的 json 文件。在我的 json 文件中,我有以下 sn-p: 文件名:角色
[{
"_id": {
"$oid": "1a2e34r6hyhujujikijk"
},
"sequence": 255559,
"name": "cruisemethods",
"createdAt": {
"$date": "2020-03-31T02:37:21.716Z"
},
"updatedAt": {
"$date": "2020-08-27T14:04:59.333Z"
},
"__v": 0
}]%
当我尝试插入上述 json(在文件中)时,它会为 objectid 和 date 引发错误:
bson.errors.InvalidDocument: key '$oid' must not start with '$'
我的代码:
import json
from pymongo import MongoClient
client = MongoClient('URL')
Dictionarysample = {'DBname':'collectionname'};
def func(db_name, col_name):
dbid = getattr(client,db_name)
collection = getattr(dbid,col_name)
with open('Filepath') as file:
file_data = json.load(file)
if isinstance(file_data, list):
collection.insert_many(file_data)
else:
collection.insert_one(file_data)
for key in Dictionarysample:
func(key,Dictionarysample[key])
版本
python: Python 3.8.2
pymongo: pymongo 3.11.3
MongodAtlas: Version 4.4.3
尝试了几乎所有现有的 stackoverflow 建议 bson.errors.InvalidDocument: key '$oid' must not start with '$' trying to insert document with pymongo,但还是不行。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
我能想到它不起作用的唯一原因是您使用的是来自
Json包的json.load(file),而不是您标记的帖子中建议的bson.json_util。
标签: python-3.x mongodb pymongo bson