2012-08-22 13 views
19

Quiero usar MongoEngine para mi próximo proyecto. Ahora me pregunto si también podría usar PyMongo directamente en el mismo proyecto. Solo para el caso de que necesite algo muy especial que no sea compatible directamente a través de mongoengine.Utilice Mongo Engine y PyMongo juntos

¿Hay alguna duda de que esto funcionaría, o que no debería hacer eso?

Respuesta

38

Autor de MongoEngine aquí - MongoEngine se basa en pymongo así que por supuesto puedes utilizar pymongo - ¡o usar pymongo sin procesar en tu código!

Hay algunos ayudantes de documentos que le permiten acceder a los métodos pymongo primas en MongoEngine por ejemplo:

class Person(Document): 
    name = StringField() 

# Access the pymongo collection for the Person document 
collection = Person._get_collection() 
collection.find_one() # Use raw pymongo to query data 
+0

Gracias. Así es como esperaba que funcionara :) Como tengo el autor aquí. Podría hacer otra pregunta :) En este hilo, uno describe cómo agregar un campo a una colección: http://tiny.cc/xmofjw. Tiene agregar un campo a un DynamicDocument, como se describe aquí: http: // tiny. cc/4iofjw, el mismo efecto (= actualización de toda la colección) o agrego .tags (del ejemplo) solo al documento ... Y de alguna manera sería genial si pudiera definir el tipo de campo que estoy agregando en tiempo de ejecución al dynamicDocument. Pero tal vez esa no es la idea de mongoDB. Empezando e intentando entender. –

+0

¿Está incluido pymongo vía raw solo es posible para consultas? Intenté que db.your_collection.update ({}, {$ set: {"new_field": 1}}, falso, verdadero) funcionara, pero no tuve suerte. –

+1

Puede definirlo en la clase de documento y siempre que no sea necesario, no tendrá problemas. También puede hacer una actualización de pymongo para configurarlo, pero si no está definido en el documento, entonces no verá el valor a menos que esté utilizando un documento dinámico – Ross