jsonファイルからコレクションに文書を挿入します。bson.errors.InvalidDocument: key '$oid' must not start with '$'
どうすれば解決できますか?文書の
例: [{"name": "Company", "_id": {"$oid": "1234as123541gsdg"}, "info": {"email": "[email protected]"}}]
jsonファイルからコレクションに文書を挿入します。bson.errors.InvalidDocument: key '$oid' must not start with '$'
どうすれば解決できますか?文書の
例: [{"name": "Company", "_id": {"$oid": "1234as123541gsdg"}, "info": {"email": "[email protected]"}}]
がbson.ObjectId
クラスでPythonでたObjectIdを表します
from bson import ObjectId
_id = ObjectId("5899e0aca600741755433908")
だから、完全例えば:
from bson import ObjectId
collection.insert(
{"name": "Company", "_id": ObjectId("5899e0aca600741755433908"),
"info": {"email": "[email protected]"}})
MongoDBの拡張JSONをロードするためにデータ、PyMongo'sを使用json_util.loads
:
from bson.json_util import loads
json_str = '[{"name": "Company", "_id": {"$oid": "5899e0aca600741755433908"}, "info": {"email": "[email protected]"}}]'
data = loads(json_str)
print(data)
for doc in data:
collection.insert(doc)
"loads()"は、 "$ oid"を含む拡張JSON構文から実際のObjectIdインスタンスに変換します。
ありがとう:-) –
よろしくお願いします!私は自分の答えに追加すべきものがほかにありますか、それとも正しいとマークしますか? –
正しいとマークしました。すべてが良いです –
サンプルドキュメントを教えてください。 "$"で始まるドキュメントIDの価値があるようです –
あなたは '$'をエスケープする必要があるでしょう。 簡単な方法は次のとおりです: 'import re; re.escape(あなたの変数はここにあります) ' – Nether
質問の本文を文書 –