2012-04-03 47 views
5

我需要OID從數據庫獲取的文件,如搜索文件:如何通過OID在mongoengine

Docs.objects(_id='4f4381f4e779897a2c000009') 

可是怎麼辦呢,如果_id需要的ObjectId對象,甚至我嘗試從pymongo其設置的ObjectId不起作用。

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

回空單

回答

15

如何只使用原始字符串:

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

這可能是最簡單的方法...權?

+0

雖然不適用於主鍵。還是我唯一? – 2015-12-20 19:00:46

+0

http://docs.mongoengine.org/apireference.html#mongoengine.queryset.QuerySet.get – Wtower 2017-01-04 22:55:25

20

這應該工作:

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

是的,這正確的,thx。 – Denis 2012-04-03 09:02:29

+0

這一個返回列表。沒有一個單一的對象。 – Raptor 2018-02-26 16:11:18

7

來到這個問題,因爲我自己有很多麻煩。好像PyMongo changed this而objectid不再裏面pymongo,現在改爲:

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

此外,Mongoengine使用爲ObjectID字段名稱「ID」。

+1

感謝分享,它的工作原理。 – 2014-09-23 10:08:47