Python bson.errors.InvalidDocument:key'$oid';不得以'开头$';尝试使用pymongo插入文档
我想从json文件将文档插入到集合中,该文件显示Python bson.errors.InvalidDocument:key'$oid';不得以'开头$';尝试使用pymongo插入文档,python,pymongo,Python,Pymongo,我想从json文件将文档插入到集合中,该文件显示bson.errors.InvalidDocument:键“$oid”不能以“$”开头。 我怎样才能解决它 文件示例: [{“名称”:“公司”,“_id”:{“$oid”:“1234as123541gsdg”},“信息”:{“电子邮件”:”test@gmail.com"}}] 使用bson.ObjectId类在Python中表示ObjectId: from bson import ObjectId _id = ObjectId("5899e0a
bson.errors.InvalidDocument:键“$oid”不能以“$”开头。
我怎样才能解决它
文件示例:
[{“名称”:“公司”,“_id”:{“$oid”:“1234as123541gsdg”},“信息”:{“电子邮件”:”test@gmail.com"}}]
使用bson.ObjectId
类在Python中表示ObjectId:
from bson import ObjectId
_id = ObjectId("5899e0aca600741755433908")
举一个完整的例子:
from bson import ObjectId
collection.insert(
{"name": "Company", "_id": ObjectId("5899e0aca600741755433908"),
"info": {"email": "test@gmail.com"}})
要加载MongoDB扩展JSON数据,请使用PyMongo的:
“loads()”将带有“$oid”的扩展JSON语法转换为实际的ObjectId实例。尝试删除文件中的所有空白(\n,字符串引号外的空格)。它可能像奇迹一样工作您能举个例子吗?似乎文档id的值以“$”开头,您很可能需要转义
$
。一个简单的方法是:importre;关于escape({your variable here})
我已经用文档示例更新了问题正文“\u id:“1234as123541gsdg”
?当我将集合转储到json文件时,我就知道了不客气!还有什么我应该添加到我的答案中,或者你会将其标记为正确的吗?有人知道Ruby是否有类似的东西吗?只是想说明一下,你可以通过file.read()从json文件中获取json_str。以f:json_str=f.read()的形式打开(“filepath”,“r”)。请记住:“简洁是可以接受的,但更完整的解释更好。”
from bson.json_util import loads
json_str = '[{"name": "Company", "_id": {"$oid": "5899e0aca600741755433908"}, "info": {"email": "test@gmail.com"}}]'
data = loads(json_str)
print(data)
for doc in data:
collection.insert(doc)