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

गणना की गई स्थिति पर मोंगो सॉर्ट

यदि आप कुछ मानदंडों के अनुसार परिणाम "वजन" करना चाहते हैं या "सॉर्ट" के भीतर किसी भी प्रकार का "गणना मूल्य" है, तो आपको .aggregate() की आवश्यकता है इसके बजाय विधि। यह "अनुमानित" मानों को $sort . में उपयोग करने की अनुमति देता है ऑपरेशन, जिसके लिए दस्तावेज़ में केवल एक वर्तमान फ़ील्ड का उपयोग किया जा सकता है:

db.messages.aggregate([
    { "$match": { "messages": userId } },
    { "$project": {
        "recipients": 1,
        "unread": 1,
        "content": 1,
        "readYet": {
            "$setIsSubset": [ [userId], "$unread" ] }
        }
    }},
    { "$sort": { "readYet": -1 } },
    { "$limit": 20 }
])

यहां $setIsSubset ऑपरेटर "अपठित" सरणी की तुलना [userId] . के परिवर्तित सरणी से करने की अनुमति देता है यह देखने के लिए कि क्या कोई मैच हैं। परिणाम या तो true होगा जहां userId मौजूद है या false जहां यह नहीं है।

इसके बाद इसे $sort . पर पास किया जा सकता है , जो मैचों को वरीयता के साथ परिणामों का आदेश देता है (निर्णायक प्रकार true . है शीर्ष पर), और अंत में $limit केवल निर्दिष्ट राशि तक परिणाम लौटाता है।

तो "सॉर्ट" के लिए एक गणना शब्द का उपयोग करने के लिए, मूल्य को दस्तावेज़ में "अनुमानित" करने की आवश्यकता है ताकि इसे सॉर्ट किया जा सके। एकत्रीकरण ढांचा यह है कि आप इसे कैसे करते हैं।

यह भी ध्यान रखें कि $elemMatch केवल एक सरणी के भीतर एक मान से मेल खाने की आवश्यकता नहीं है, और आपको केवल सीधे मान निर्दिष्ट करने की आवश्यकता है। इसका उद्देश्य यह है कि एक सरणी तत्व पर "एकाधिक" शर्तों को पूरा करने की आवश्यकता होती है, जो निश्चित रूप से यहां लागू नहीं होती है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला जे एस खोजएक हमेशा अशक्त लौटाता है

  2. मोंगोडीबी $ifNull

  3. mongodb प्रत्येक पुनर्प्राप्त दस्तावेज़ में काउंटर जोड़ें

  4. मोंगो डीबी में नेस्टेड फ़ील्ड का चयन करें

  5. पारित तर्क 24 हेक्स वर्णों की एक स्ट्रिंग होना चाहिए - मुझे लगता है कि यह है