2012-04-03 12 views
5

muszę dostać dokumenty z db przez oid, jak:Jak szukać dokument OID w mongoengine

Docs.objects(_id='4f4381f4e779897a2c000009') 

ale jak to zrobić, jeśli _id wymaga obiektu objectID a nawet próbuję ustawić objectID z pymongo nim nie działa.

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

powrót pusta lista

Odpowiedz

15

Jak około tuż za pomocą ciąg surowego:

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

to chyba najprostszy sposób ... prawo ?

+0

Nie działa jednak dla klucza podstawowego. Czy tylko ja jestem jedyny? –

+0

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

20

To powinno działać:

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

Tak, to prawda, thx. – Denis

+0

Ta zwraca listę. Ani jednego obiektu. – Raptor

7

Przyszedłem na to pytanie, ponieważ sam miałem z tym wiele problemów. Wydaje się PyMongo changed this i objectID nie jest już wewnątrz pymongo i obecnie zamiast:

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

Również Mongoengine używa nazwy „identyfikator” dla pola objectID.

+1

dzięki za udostępnienie, to działa. –