2012-08-22 19 views
19

Desidero utilizzare MongoEngine per il mio prossimo progetto. Ora mi chiedo se posso anche usare PyMongo direttamente nello stesso progetto. Solo per il caso che ho bisogno di qualcosa di molto speciale che non è supportato direttamente tramite mongoengine.Utilizzare MongoEngine e PyMongo insieme

Ci sono dei dubbi sul fatto che ciò funzionerebbe o che non dovrei farlo ?!

risposta

38

Autore di MongoEngine qui - MongoEngine è costruito su pymongo, quindi è naturale che tu possa entrare nel pymongo o usare il pymongo crudo nel tuo codice!

ci sono alcuni aiutanti di documenti che consentono di accedere ai metodi pymongo prime MongoEngine esempio:

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

Grazie. È così che speravo funzionasse :) Come ho l'autore qui. Potrei fare un'altra domanda :) In questo thread si descrive come aggiungere un campo a una raccolta: http://tiny.cc/xmofjw .. Ha aggiunto un campo a un DynamicDocument, come descritto qui: http: // tiny. cc/4iofjw, lo stesso effetto (= aggiornamento dell'intera collezione) o aggiungo i .tags (dall'esempio) solo al documento .. E in qualche modo sarebbe bello se potessi definire il tipo di campo che sono aggiungendo al runtime al dynamicDocument. Ma forse questa non è l'idea di mongoDB. Sto iniziando e provando a capire. –

+0

È incluso pymongo tramite raw possibile solo per le query? Ho provato a ottenere db.your_collection.update ({}, {$ set: {"new_field": 1}}, false, true) funzionante, ma senza fortuna. –

+1

Si potrebbe semplicemente definirlo nella classe del documento e finché non è richiesto non si avrà un problema. Puoi anche fare un aggiornamento di pymongo per impostarlo - ma se non è definito nel documento allora non vedrai il valore a meno che tu non stia usando un DynamicDocument – Ross

Problemi correlati