sql >> Databáze >  >> NoSQL >> MongoDB

PyMongo vs MongoEngine pro Django

Toto je stará otázka, ale když jsem na ni narazil, nemyslím si, že přijatá odpověď na tuto otázku odpovídá. Otázka nebyla "Co je MongoEngine?" - bylo to "Proč bych měl používat MongoEngine?" A výhody takového přístupu. Toto překračuje Django k Pythonu/Mongu obecně. Moje dva centy:

Zatímco PyMongo i MongoEngine vracejí objekty (což není špatné), PyMongo vrací slovníky, které potřebují mít své klíče odkazované řetězcem. MongoEngine vám umožňuje definovat schéma prostřednictvím tříd pro vaše data dokumentu. Poté za vás namapuje dokumenty do těchto tříd a umožní vám s nimi manipulovat. Proč definovat schéma pro data bez schématu? Protože podle mého názoru je to jasné, explicitní a mnohem jednodušší na programování. Neskončíte se slovníky roztroušenými po vašem kódu, kde nemůžete zjistit, co v nich je, aniž byste se skutečně podívali na data nebo nespustili program. V případě MongoEngine a slušného IDE, jako je PyCharm, zadejte jednoduché "." poté, co vám objekt sdělí vše, co potřebujete vědět, prostřednictvím automatického dokončování. Pro další vývojáře, kteří přicházejí, je také mnohem snazší zkoumat a učit se datový model při práci a každému, kdo kód dlouho neviděl, bude produktivnější a rychlejší.

Navíc je pro mě syntaxe používaná k manipulaci s dokumenty pomocí PyMonga (což je v podstatě stejná jako mongo konzole) ošklivá, náchylná k chybám a obtížně se udržuje.

Zde je základní příklad aktualizace dokumentu v MongoEngine, který je podle mě velmi elegantní:

BlogPost.objects(id=post.id).update(title='Example Post')

Proč používat PyMongo? MongoEngine je vrstva mezi vámi a holým kovem, takže je pravděpodobně pomalejší, i když žádné benchmarky nemám. PyMongo je nižší úroveň, takže přirozeně máte větší kontrolu. U jednoduchých projektů může být MongoEngine zbytečný. Pokud již syntaxi Mongo ovládáte, možná vám bude PyMongo mnohem intuitivnější než mně a nebude vám dělat problém psát složité dotazy a aktualizace. Možná vás baví pracovat přímo se slovníky na této nižší úrovni a nezajímá vás další vrstva abstrakce. Možná píšete skript, který není součástí velkého systému, a potřebujete, aby byl co nejštíhlejší a nejrychlejší.

Argumentu je toho víc, ale myslím, že to je docela dobré pro základy.



  1. MongoDB:Aktualizace každého dokumentu v kolekci

  2. Chyba textového indexu MongoDB:přepsání jazyka není podporováno

  3. nejlepší možný návrh schématu pro databázi analýzy protokolů v mongodb

  4. CURSOR_NOT_FOUND - moje úlohy cron začaly umírat uprostřed