उपरोक्त प्रश्न और उत्तर काफी पुराने हैं। वैसे भी, अगर कोई इस पर जाता है तो मुझे लगता है कि मुझे जोड़ना चाहिए:
यह जवाब पूरी तरह गलत है। दरअसल मोंगो दस्तावेज़ों में कुंजी-मूल्य जोड़े का आदेश दिया जाता है। हालाँकि, पाइमोंगो का उपयोग करते समय यह उन दस्तावेज़ों के लिए अजगर डिक्ट्स का उपयोग करेगा जो वास्तव में ऑर्डर नहीं किए जाते हैं (जैसा कि cpython 3.6 पायथन डिक्ट्स ऑर्डर बनाए रखते हैं, हालांकि इसे एक कार्यान्वयन विवरण माना जाता है)। लेकिन यह पाइमोंगो चालक की एक सीमा है।
ध्यान रखें, कि यह सीमा वास्तव में उपयोगिता को प्रभावित करती है। यदि आप उप-दस्तावेज़ के लिए डीबी से पूछताछ करते हैं तो यह केवल तभी मेल खाएगा जब कुंजी-मान जोड़े का क्रम सही हो।
बस निम्न कोड स्वयं आज़माएं:
from pymongo import MongoClient
db = MongoClient().testdb
col = db.testcol
subdoc = {
'field1': 1,
'field2': 2,
'filed3': 3
}
document = {
'subdoc': subdoc
}
col.insert_one(document)
print(col.find({'subdoc': subdoc}).count())
हर बार जब यह कोड निष्पादित होता है तो संग्रह में 'समान' दस्तावेज़ जोड़ा जाता है। इस प्रकार, हर बार जब हम इस कोड स्निपेट को चलाते हैं तो मुद्रित मान 'चाहिए' एक से बढ़ जाता है। ऐसा इसलिए नहीं है क्योंकि केवल सही क्रम के साथ सबडोक्यूमंट्स को ढूंढता है, लेकिन पायथन डिक्ट्स सिर्फ सबडोक को मनमाने क्रम में सम्मिलित करता है।
निम्नलिखित उत्तर देखें कि इसे दूर करने के लिए आदेशित तानाशाही का उपयोग कैसे करें:https://stackoverflow.com/a/30787769/4273834