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

पूर्ण मिलान पर प्राथमिकता के साथ मोंगोडब कुल मिलान क्वेरी

आपके सटीक उदाहरण को देखते हुए, इसे निम्नलिखित तरीके से पूरा किया जा सकता है - यदि आपकी वास्तविक दुनिया का परिदृश्य थोड़ा अधिक जटिल है, तो आपको समस्याएं आ सकती हैं, हालांकि:

db.accounts.aggregate([{
    $match: {
        "username": /pat/i // find all documents that somehow match "pat" in a case-insensitive fashion
    }
}, {
    $addFields: {
        "exact": { 
            $eq: [ "$username", "pat" ] // add a field that indicates if a document matches exactly
        },
        "startswith": { 
            $eq: [ { $substr: [ "$username", 0, 3 ] }, "pat" ] // add a field that indicates if a document matches at the start
        }

    }
}, {
    $sort: {
        "exact": -1, // sort by our primary temporary field
        "startswith": -1 // sort by our seconday temporary
    }
}, {
    $project: {
        "exact": 0, // get rid of the "exact" field,
        "startswith": 0 // same for "startswith"
    }
}])

दूसरा तरीका $facet . का उपयोग करना होगा जो अधिक जटिल परिदृश्यों को सक्षम करके थोड़ा अधिक शक्तिशाली साबित हो सकता है लेकिन धीमा (यहां कई लोग मुझसे नफरत करेंगे, हालांकि, इस प्रस्ताव के लिए):

db.accounts.aggregate([{
    $facet: { // run two pipelines against all documents
        "exact": [{ // this one will capture all exact matches
            $match: {
                "username": "pat"
            }
        }],
        "others": [{ // this one will capture all others
            $match: {
                "username": { $ne: "pat", $regex: /pat/i }
            }
        }]
    }
}, {
    $project: {
        "result": { // merge the two arrays
            $concatArrays: [ "$exact", "$others" ]
        }
    }
}, {
    $unwind: "$result" // flatten the resulting array into separate documents
}, {
    $replaceRoot: { // restore the original document structure
        "newRoot": "$result"
    }
}])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. NodeJS सर्वर एक साथ अनुरोधों पर MongoDB की खोज क्वेरी पर हैंग हो जाता है

  2. मोंगो में रूपांतरण फ्लोट करने के लिए int खोजें

  3. सी # में कनेक्शन स्ट्रिंग में निर्दिष्ट मोंगो डेटाबेस कैसे प्राप्त करें

  4. pymongo - संदेश की लंबाई सर्वर के अधिकतम संदेश आकार से बड़ी है

  5. mongoexport सिंटैक्स त्रुटि संदेश