【发布时间】:2020-08-17 01:35:39
【问题描述】:
我是 pymongo 和 mongodb 的新手,我有一个包含 157 个文档的 json 文件,我想将它们插入一个名为 Students 的集合中。我逐行加载 json 文件并将每个文档导入一个名为 data 的列表中。然后我尝试在循环中使用 insert_one() 方法将每个文档插入到 Students 集合中,我得到了很多错误 json文件的格式为:
//example of an entry
{"_id":{"$oid":"5e99cb577a781a4aac69da3c"},"name":"Tanner Wilson","email":"tannerwilson@ontagene.com","yearOfBirth":{"$numberInt":"1962"},"address":[{"street":"Halsey Street","city":"Greenwich","postcode":{"$numberInt":"13832"}}]}
我的代码:
import pymongo
from pymongo import MongoClient
import json
client = MongoClient('localhost:27017')
db = client['InfoSys']
collection=db['Students']
data=[]
with open('students.json') as f:
for json_data in f:
element =json.loads(json_data)
data.append(element)
'''print(data)''' // the json data can be printed perfectly
for k in data :
collection.insert_one(k) //this is where the error happens
我得到以下错误:
File "C:\Users\User\Anaconda3\lib\site-packages\pymongo\collection.py", line 698, in insert_one
session=session),
File "C:\Users\User\Anaconda3\lib\site-packages\pymongo\collection.py", line 612, in _insert
bypass_doc_val, session)
File "C:\Users\User\Anaconda3\lib\site-packages\pymongo\collection.py", line 600, in _insert_one
acknowledged, _insert_command, session)
File "C:\Users\User\Anaconda3\lib\site-packages\pymongo\mongo_client.py", line 1491, in _retryable_write
return self._retry_with_session(retryable, func, s, None)
File "C:\Users\User\Anaconda3\lib\site-packages\pymongo\mongo_client.py", line 1384, in _retry_with_session
return func(session, sock_info, retryable)
File "C:\Users\User\Anaconda3\lib\site-packages\pymongo\collection.py", line 595, in _insert_command
retryable_write=retryable_write)
File "C:\Users\User\Anaconda3\lib\site-packages\pymongo\pool.py", line 618, in command
self._raise_connection_failure(error)
File "C:\Users\User\Anaconda3\lib\site-packages\pymongo\pool.py", line 613, in command
user_fields=user_fields)
File "C:\Users\User\Anaconda3\lib\site-packages\pymongo\network.py", line 129, in command
codec_options, ctx=compression_ctx)
File "C:\Users\User\Anaconda3\lib\site-packages\pymongo\message.py", line 707, in _op_msg
flags, command, identifier, docs, check_keys, opts)
bson.errors.InvalidDocument: key '$oid' must not start with '$'
感谢您帮助指导我解决此问题。
【问题讨论】:
标签: python json mongodb file collections