次のように、dbからoidでドキュメントを取得する必要があります。
Docs.objects(_id='4f4381f4e779897a2c000009')
しかし、それを行う方法は、_idがObjectIdオブジェクトを必要とし、pymongoからObjectIdを設定しようとしても、機能しません。
Docs.objects(_id=pymongo.objectid.ObjectId('4f4381f4e779897a2c000009'))
空のリストを返す
次のように、dbからoidでドキュメントを取得する必要があります。
Docs.objects(_id='4f4381f4e779897a2c000009')
しかし、それを行う方法は、_idがObjectIdオブジェクトを必要とし、pymongoからObjectIdを設定しようとしても、機能しません。
Docs.objects(_id=pymongo.objectid.ObjectId('4f4381f4e779897a2c000009'))
空のリストを返す
これは機能するはずです:
Docs.objects(pk='4f4381f4e779897a2c000009')
生の文字列を使用するのはどうですか?
Docs.objects.get(id='4f4381f4e779897a2c000009')
それがおそらく最も簡単な方法です...そうですか?
私自身、これに多くの問題を抱えていたので、この質問に来ました。PyMongoがこれを変更したようで、objectidはpymongo内になくなり、代わりになりました。
import bson
Doc.objects.get(id=bson.objectid.ObjectId('4f4381f4e779897a2c000009'))
また、MongoengineはObjectIDフィールドに「id」という名前を使用します。
このスレッドは古いですが、2022年頃に誰かが見た場合:これはMongoDB Atlas + Mongoengine==0.23.1で正常に機能します
from bson.objectid import ObjectId
Doc.objects(_id=ObjectId("85a2c854002c893dd7756b5g"))