2012-04-03 14 views
5

puedo recibir documentos desde db por OID, como:Cómo buscar documentos por OID en mongoengine

Docs.objects(_id='4f4381f4e779897a2c000009') 

Pero cómo hacerlo, si _id requiere objeto OBJECTID e incluso intento configurar OBJECTID de pymongo se no funciona

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

retorno lista vacía

Respuesta

15

¿Qué tal utilizando la cadena prima:

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

Eso es probablemente la forma más fácil ... justo ?

+0

Sin embargo, no funciona para la llave primaria. ¿O soy el único? –

+0

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

20

Esto debería funcionar:

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

Sí, esto correcto, gracias. – Denis

+0

Esta lista de devoluciones. Ni un solo objeto – Raptor

7

Llegué a esta pregunta porque tuve muchos problemas con esto yo mismo. Parece que PyMongo changed this y objectid ya no está dentro pymongo y ahora está en su lugar:

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

Además, Mongoengine utiliza el nombre 'id' para el campo de objeto.

+1

gracias por compartir, funciona. –

Cuestiones relacionadas