2012-04-03 8 views
5

ho bisogno di ottenere documenti dal db da OID, come:Come cercare documento oid in mongoengine

Docs.objects(_id='4f4381f4e779897a2c000009') 

Ma come farlo, se _id richiede oggetto ObjectId e anche io cerco di impostare ObjectId da pymongo esso non funziona

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

ritorno lista vuota

risposta

15

ne dite di semplicemente utilizzando la stringa di prima:

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

Questo è probabilmente il modo più semplice ... giusto ?

+0

Tuttavia, non funziona con la chiave primaria. O sono l'unico? –

+0

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

20

Questo dovrebbe funzionare:

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

Sì, questo corretto per, thx. – Denis

+0

Questo restituisce la lista. Non un singolo oggetto. – Raptor

7

È venuto a questa domanda, perché ho avuto un sacco di problemi con questo me stesso. Sembra PyMongo changed this e objectid non è più dentro pymongo ed è ora invece:

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

Inoltre, Mongoengine usa il nome di 'id' per il campo ObjectID.

+1

grazie per la condivisione, funziona. –

Problemi correlati