2012-08-22 14 views
19

Chcę użyć MongoEngine do mojego następnego projektu. Teraz zastanawiam się, czy mogę również użyć PyMongo bezpośrednio w tym samym projekcie. Tylko dla przypadku, że potrzebuję czegoś specjalnego, które nie jest obsługiwane bezpośrednio przez mongoengine.Użyj MongoEngine i PyMongo razem

Czy są jakieś wątpliwości, czy to zadziała, czy że nie powinienem tego robić !?

Odpowiedz

38

Autor MongoEngine tutaj - MongoEngine jest zbudowany na pymongo, więc oczywiście możesz wpaść w pymongo - lub użyć surowego pymongo w swoim kodzie!

Istnieje kilka pomocnicy dokumentów, które umożliwiają dostęp do surowych metod pymongo w MongoEngine np:

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

Dzięki. Tak miałem nadzieję, że to zadziała :) Jak mam tu autora. Mogę zadać kolejne pytanie :) W tym wątku opisano sposób dodawania pola do kolekcji: http://tiny.cc/xmofjw .. Dodaje pole do DynamicDocument, jak opisano tutaj: http: // tiny. cc/4iofjw, ten sam efekt (= aktualizacja całej kolekcji) lub dodaję .tags (z przykładu) tylko do dokumentu .. I jak by było wspaniale, gdybym mógł zdefiniować typ pola, które ja dodawanie w czasie wykonywania do dokumentu dynamicDocument. Ale może to nie jest idea mongoDB. Właśnie zaczynam i próbuję zrozumieć. –

+0

Czy uwzględnienie pymongo przez raw jest możliwe tylko w przypadku zapytań? Próbowałem pobrać plik db.your_collection.update ({}, {$ set: {"new_field": 1}}, false, true), ale bez powodzenia. –

+1

Można go zdefiniować w klasie dokumentów i tak długo, jak nie jest to wymagane, nie będzie problemu. Możesz również wykonać aktualizację pymongo, aby ją ustawić - ale jeśli nie zostanie ona zdefiniowana w dokumencie, nie zobaczysz tej wartości, chyba że korzystasz z DynamicDocument – Ross