Pymongoドライバーを使用しています。おそらく、次のように文字列を使用してドキュメントの_idフィールドをクエリできます。
thing = db.things.find_one({'_id':'4ea113d6b684853c8e000001'})
しかし、それは機能しません。何が悪いのですか?
そのはず :
from pymongo.objectid import ObjectId
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001') })
編集:現在のインポートは次のとおりです:from bson.objectid import ObjectId
PyMongoはその構造を変更しました。 ObjectID
はpymongo
ではなくbson
からインポートされます。これで次のようになります。
from bson.objectid import ObjectId
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001')})
pypi/pymongo に従って、「bson」パッケージをインストールしないでください。 PyMongoには独自のbsonパッケージが付属しています。 「pip install bson」を実行すると、PyMongoと互換性のないサードパーティパッケージがインストールされます。
印刷するには:
import pymongo
from bson.objectid import ObjectId
print(db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001')}))
印刷したくない場合は、他の変数に保存します
PyMongoのドキュメントが現在のバージョンと同期していないようです。 ObjectIdは、bson.objectid名前空間の下にあります。私の記憶が正しければ、バージョン2.3以降はそうです。 bson.objectid import ObjectIdから使用します。
thing = db.things.find_one({'_id':ObjectId('4ea113d6b684853c8e000001')})
は機能するはずです