2012-04-03 5 views
5

мне нужно получить документы из БД по подъязычная, как:Как найти документ по OID в mongoengine

Docs.objects(_id='4f4381f4e779897a2c000009') 

Но как это сделать, если _id требует объект ObjectId и даже я пытаюсь установить ObjectId из PyMongo него не работает.

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

Пришел к этому вопросу, потому что у меня было много проблем с этим. Похоже, PyMongo changed this и ObjectID больше не внутри PyMongo и теперь вместо того, чтобы:

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

Кроме того, Mongoengine использует имя «идентификатор» для ObjectID поля.

+1

спасибо за обмен, он работает. –