यह एक पुराना प्रश्न है, लेकिन इस पर ठोकर खा रहा है, मुझे नहीं लगता कि स्वीकृत उत्तर प्रश्न का उत्तर देता है। सवाल नहीं था "MongoEngine क्या है?" - यह था "मुझे MongoEngine का उपयोग क्यों करना चाहिए?" और इस तरह के दृष्टिकोण के फायदे। यह सामान्य रूप से Django से पायथन/मोंगो तक जाता है। मेरे दो सेंट:
जबकि PyMongo और MongoEngine दोनों वस्तुओं को लौटाते हैं (जो गलत नहीं है), PyMongo उन शब्दकोशों को लौटाता है जिन्हें स्ट्रिंग द्वारा संदर्भित अपनी कुंजी की आवश्यकता होती है। MongoEngine आपको अपने दस्तावेज़ डेटा के लिए कक्षाओं के माध्यम से एक स्कीमा परिभाषित करने की अनुमति देता है। यह तब आपके लिए दस्तावेज़ों को उन वर्गों में मैप करेगा और आपको उनमें हेरफेर करने की अनुमति देगा। स्कीमा-रहित डेटा के लिए स्कीमा क्यों परिभाषित करें? क्योंकि मेरी राय में, इसका स्पष्ट, स्पष्ट, और इसके खिलाफ प्रोग्राम करना बहुत आसान है। आप अपने कोड के बारे में बिखरे हुए शब्दकोशों के साथ समाप्त नहीं होते हैं जहां आप वास्तव में डेटा को देखे बिना या प्रोग्राम चलाए बिना यह नहीं बता सकते कि उनमें क्या है। MongoEngine और PyCharm जैसे सभ्य IDE के मामले में, एक साधारण "।" ऑब्जेक्ट के बाद आपको वह सब कुछ बताएगा जो आपको स्वतः पूर्ण के माध्यम से जानने की आवश्यकता है। डेटा मॉडल की जांच करने और सीखने के लिए आने वाले अन्य डेवलपर्स के लिए भी यह बहुत आसान है क्योंकि वे काम करते हैं और किसी को भी जिसने कोड को कुछ समय में अधिक उत्पादक नहीं देखा है, तेज कर देगा।
इसके अतिरिक्त, मेरे लिए, पाइमोंगो (जो अनिवार्य रूप से मोंगो कंसोल के समान है) के साथ दस्तावेज़ों में हेरफेर करने के लिए उपयोग किया जाने वाला सिंटैक्स बदसूरत, त्रुटि प्रवण और बनाए रखने में मुश्किल है।
यहाँ MongoEngine में एक दस्तावेज़ को अद्यतन करने का एक बुनियादी उदाहरण दिया गया है, जो मेरे लिए बहुत ही सुंदर है:
BlogPost.objects(id=post.id).update(title='Example Post')
पायमोंगो का उपयोग क्यों करें? MongoEngine आपके और नंगे धातु के बीच एक परत है, इसलिए यह शायद धीमा है, हालांकि मेरे पास कोई बेंचमार्क नहीं है। PyMongo निचला स्तर है, इसलिए स्वाभाविक रूप से आपके पास अधिक नियंत्रण है। सरल परियोजनाओं के लिए, MongoEngine अनावश्यक हो सकता है। यदि आप पहले से ही मोंगो सिंटैक्स में धाराप्रवाह हैं, तो आप पाइमोंगो को मुझसे अधिक सहज ज्ञान युक्त पा सकते हैं और जटिल प्रश्न और अपडेट लिखने में कोई समस्या नहीं है। शायद आप उस निचले स्तर पर शब्दकोशों के साथ सीधे काम करने का आनंद लेते हैं और अमूर्तता की एक अतिरिक्त परत में रुचि नहीं रखते हैं। हो सकता है कि आप कोई ऐसी स्क्रिप्ट लिख रहे हों जो किसी बड़े सिस्टम का हिस्सा न हो, और आपको इसे जितना हो सके दुबला और तेज़ होना चाहिए।
तर्क के लिए और भी बहुत कुछ है, लेकिन मुझे लगता है कि यह बुनियादी बातों के लिए बहुत अच्छा है।