Python bson.errors.InvalidDocument:key'$oid';不得以'开头$';尝试使用pymongo插入文档

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

我想从json文件将文档插入到集合中,该文件显示
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)