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

किसी सरणी के अंतिम तत्व का उपयोग करके संग्रह को कैसे क्रमबद्ध करें

यदि संभव हो, तो मेरा सुझाव है कि आप हमेशा (डबल) उस मूल्य को स्टोर करें जिसे आप सॉर्ट करना चाहते हैं। इसे सरणी में और दूसरे क्षेत्र में रखें। जब भी आप सरणी में एक नया मान दबाते हैं (या सरणी को स्टोर करते हैं), तो "सरणी में अंतिम मान" के अनुरूप एक नया फ़ील्ड जोड़ें और फिर इंडेक्स करें और उस पर सॉर्ट करें। नीचे दिए गए उदाहरण में, मैंने इसे lastR कहा है :

{ "value" : -10, "r" : [ { "v" : 1 }, { "v" : 3 } ], "lastR": 3 }
{ "value" : 2, "r" : [ { "v" : 4 }, { "v" : 1 } ], "lastR": 1 }
{ "value" : -100, "r" : [ { "v" : 4 }, { "v" : 1 }, { "v" : 10 } ], "lastR": 10 }
{ "value" : -3, "r" : [ ] }

एक इंडेक्स बनाएं:

db.so.ensureIndex({lastR: 1})

और फिर उपयोग करें:

> db.so.find().sort({lastR: 1})
{ "_id" : ObjectId("5203a1c83c5438af60de63a1"), "value" : -3, "r" : [ ] }
{ "_id" : ObjectId("5203a1ad3c5438af60de639f"), "value" : 2, "r" : [ { "v" : 4 }, { "v" : 1 } ], "lastR" : 1 }
{ "_id" : ObjectId("5203a1d33c5438af60de63a2"), "value" : -10, "r" : [ { "v" : 1 }, { "v" : 3 } ], "lastR" : 3 }
{ "_id" : ObjectId("5203a1b73c5438af60de63a0"), "value" : -100, "r" : [ { "v" : 4 }, { "v" : 1 }, { "v" : 10 } ], "lastR" : 10 }

यह एक एकत्रीकरण समाधान का उपयोग करने की कोशिश करने से कहीं अधिक बहुमुखी और विस्तार योग्य होगा (जिसमें परिणाम सेट के लिए 16 एमबी की सीमा होगी और प्रक्षेपण से निपटने की आवश्यकता होने पर जटिल दस्तावेजों को पुनर्प्राप्त करना कहीं अधिक जटिल बना देता है)।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodump को खाली फ़ोल्डर मिल रहे हैं

  2. पाइमोंगो:नाम 'आइसोडेट' परिभाषित नहीं है

  3. विशिष्ट मानदंडों के साथ अंतिम दस्तावेज़ प्राप्त करें

  4. उल्का में अलग परीक्षण और विकास डेटाबेस कैसे स्थापित करें

  5. मोंगोडब जावा ड्राइवर का उपयोग करके इनर ऐरेलिस्ट ऑब्जेक्ट को अपडेट करने में असमर्थ