2012-04-03 10 views
5

私は同じように、OIDでDBから文書を取得する必要にOIDで文書を検索する方法:、それを行うにはmongoengine

Docs.objects(_id='4f4381f4e779897a2c000009') 

しかし、どのように_idがのObjectIdオブジェクトを必要とさえ私はそれpymongoからのObjectIdを設定しようとすると、動作しません。

Docs.objects(_id=pymongo.objectid.ObjectId('4f4381f4e779897a2c000009')) 

リターン空のリスト

答えて

15

どのようにちょうど生の文字列の使用について:

Docs.objects.get(id='4f4381f4e779897a2c000009') 

おそらく最も簡単な方法です...右?

+0

主キーでは機能しません。あるいは私は唯一の人ですか? –

+0

http://docs.mongoengine.org/apireference.html#mongoengine.queryset.QuerySet.get – Wtower

20

これは動作するはずです:

Docs.objects(pk='4f4381f4e779897a2c000009') 
+0

ええ、これは、thxにぴったりです。 – Denis

+0

これはリストを返します。単一のオブジェクトではありません。 – Raptor

7

私はこの問題に多大な苦労があったので、この質問に来ました。

import bson 
Doc.objects.get(id=bson.objectid.ObjectId('4f4381f4e779897a2c000009')) 

はまた、MongoengineはObjectIDフィールドの名前「ID」を使用しています。PyMongo changed thisとOBJECTIDは、もはや内部pymongo、代わりに今ではありませんように思えます。

+1

共有してくれてありがとうございます。 –