MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

क्या MongoDB और उसके ड्राइवर दस्तावेज़ तत्वों के क्रम को सुरक्षित रख सकते हैं

संस्करण 2.6 से, MongoDB जहां संभव हो फ़ील्ड के क्रम को सुरक्षित रखता है। हालांकि, _id फ़ील्ड हमेशा पहले आता है एक नाम बदलने वाले फ़ील्ड पुनः क्रमित कर सकते हैं। हालांकि, मैं आमतौर पर इस तरह के विवरणों पर भरोसा नहीं करने की कोशिश करता हूं। जैसा कि मूल प्रश्न में उल्लेख किया गया है, विचार करने के लिए अतिरिक्त परतें भी हैं, जिनमें से प्रत्येक को आदेश की स्थिरता के लिए किसी प्रकार की गारंटी प्रदान करनी चाहिए...

मूल उत्तर:

नहीं, MongoDB फ़ील्ड के क्रम की गारंटी नहीं देता :

विशेष रूप से, इन-प्लेस अपडेट जो दस्तावेज़ के आकार को बदलते हैं, आमतौर पर फ़ील्ड के क्रम को बदल देंगे। उदाहरण के लिए, यदि आप $set एक फ़ील्ड जिसका पुराना मान प्रकार संख्या का था और नया मान NumberLong . है , फ़ील्ड आमतौर पर फिर से क्रमित हो जाते हैं।

हालाँकि, सरणियाँ सही ढंग से क्रम को बनाए रखती हैं:

[ {'key1' : 'value1'}, {'key2' : 'value2'}, ... ]

मैं नहीं देखता कि यह "बदसूरत" और "फूला हुआ" क्यों है। जटिल वस्तुओं की सूची संग्रहीत करना आसान नहीं हो सकता। हालांकि, वस्तुओं को सूचियों के रूप में गाली देना निश्चित रूप से बदसूरत है:वस्तुओं में सहयोगी सरणी शब्दार्थ होते हैं (अर्थात किसी दिए गए नाम का केवल एक क्षेत्र हो सकता है), जबकि सूचियाँ/सरणी नहीं:

// not ok:
db.foo2.insert({"foo" : "bar", "foo" : "lala" });
db.foo2.find();
{ "_id" : ObjectId("4ef09cd9b37bc3cdb0e7fb26"), "foo" : "lala" }

// a list can do that
db.foo2.insert({ 'array' : [ {'foo' : 'bar'}, { 'foo' : 'lala' } ]});
db.foo2.find();
{ "_id" : ObjectId("4ef09e01b37bc3cdb0e7fb27"), "array" : 
      [ { "foo" : "bar" }, { "foo" : "lala" } ] }

ध्यान रखें कि MongoDB एक ऑब्जेक्ट डेटाबेस है, कुंजी/मान स्टोर नहीं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB ISODate ऑब्जेक्ट से आने वाले नैनोसेकंड खो गए

  2. Powershell के साथ जटिल क्वेरी MongoDB कैसे बनाएं?

  3. उपयोग कैसे सेट करेंMongoClient (मोंगोस 4.11.0)?

  4. आईडी को ऑब्जेक्ट आईडी में बदलने के लिए मोंगो के लिए स्प्रिंग डेटा रोकें

  5. कैसे जांचें कि कोई सरणी फ़ील्ड MongoDB में किसी अन्य सरणी का हिस्सा है या नहीं?