MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

PyMongo срещу MongoEngine за Django

Това е стар въпрос, но като се натъкнах на него, не мисля, че приетият отговор отговаря на въпроса. Въпросът не беше "Какво е MongoEngine?" - беше "Защо да използвам MongoEngine?" И предимствата на такъв подход. Това надхвърля Django до Python/Mongo като цяло. Моите два цента:

Докато и PyMongo, и MongoEngine връщат обекти (което не е грешно), PyMongo връща речници, чиито ключове трябва да бъдат посочени чрез низ. MongoEngine ви позволява да дефинирате схема чрез класове за данните на вашия документ. След това ще картографира документите в тези класове вместо вас и ще ви позволи да ги манипулирате. Защо да дефинирате схема за данни без схема? Защото според мен той е ясен, ясен и много по-лесен за програмиране срещу него. Няма да се окажете с речници, разпръснати из кода ви, където не можете да разберете какво има в тях, без всъщност да погледнете данните или да стартирате програмата. В случай на MongoEngine и прилична IDE като PyCharm, въведете просто "." след като обектът ще ви каже всичко, което трябва да знаете чрез автоматично попълване. Освен това е много по-лесно за други разработчици, които влизат, да изследват и научат модела на данни, докато работят, и ще направят всеки, който не е виждал кода от известно време, по-продуктивен и по-бърз.

Освен това за мен синтаксисът, използван за манипулиране на документи с PyMongo (което по същество е същото като конзолата mongo) е грозен, податлив на грешки и труден за поддръжка.

Ето основен пример за актуализиране на документ в MongoEngine, който за мен е много елегантен:

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

Защо да използвате PyMongo? MongoEngine е слой между вас и голия метал, така че вероятно е по-бавен, въпреки че нямам никакви показатели. PyMongo е по-ниско ниво, така че естествено имате повече контрол. За прости проекти MongoEngine може да е ненужен. Ако вече владеете добре синтаксиса на Mongo, може да намерите PyMongo за много по-интуитивен от мен и нямате проблем с писането на сложни заявки и актуализации. Може би ви харесва да работите директно с речници на това по-ниско ниво и не се интересувате от допълнителен слой абстракция. Може би пишете скрипт, който не е част от голяма система, и трябва да бъде възможно най-прост и бърз.

Има още нещо в аргумента, но мисля, че това е доста добре за основите.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Най-добри практики за актуализиране на асинхронно дублирани данни в mongodb

  2. Как внедрявате автоматично увеличаващ се първичен идентификатор в MongoDB?

  3. Клонирайте колекция в MongoDB

  4. групирайте по заявки за колекция от метеори

  5. Поддържа ли MongoDB типове с плаваща запетая?