bson.errors.InvalidDocument:key' $ oid'不得以' $'开头。试图用pymongo插入文件

时间:2017-02-07 11:44:36

标签: python pymongo

我想从json文件中将文档插入到集合中,它说bson.errors.InvalidDocument: key '$oid' must not start with '$' 我该如何解决?

文件示例: [{"name": "Company", "_id": {"$oid": "1234as123541gsdg"}, "info": {"email": "test@gmail.com"}}]

2 个答案:

答案 0 :(得分:6)

使用bson.ObjectId类代表Python中的ObjectIds:

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' json_util.loads

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)

"负载()"从扩展的JSON语法转换为" $ oid"到实际的ObjectId实例。

答案 1 :(得分:0)

尝试删除文件中的所有空格(\ n,字符串引号之外的空格)。它可能像奇迹一样工作