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

MongoDB में एक सरणी में खोजें और मैचों की संख्या के आधार पर छाँटें

हां, एग्रीगेशन फ्रेमवर्क का उपयोग करना संभव है।

मान्यताएं

  • यहां उपयोग किया गया डेटासेट वही है जिसका उपयोग सूची में टैग वाले दस्तावेज़ प्राप्त करें, मिलान की कुल संख्या के आधार पर किया जाता है
  • tags विशेषता एक सेट है (कोई दोहराए गए तत्व नहीं)

क्वेरी

यह दृष्टिकोण आपको परिणामों को खोलने के लिए मजबूर करता है और अनचाहे परिणामों के साथ मैच विधेय का पुनर्मूल्यांकन करता है, इसलिए यह वास्तव में अक्षम है।

db.test_col.aggregate(
    {$match: {tags: {$in: ["shirt","cotton","black"]}}}, 
    {$unwind: "$tags"}, 
    {$match: {tags: {$in: ["shirt","cotton","black"]}}}, 
    {$group: {
        _id:{"_id":1}, 
        matches:{$sum:1}
    }}, 
    {$sort:{matches:-1}}
);

अपेक्षित परिणाम

{
    "result" : [
        {
            "_id" : {
                "_id" : ObjectId("5051f1786a64bd2c54918b26")
            },
            "matches" : 3
        },
        {
            "_id" : {
                "_id" : ObjectId("5051f1726a64bd2c54918b24")
            },
            "matches" : 2
        },
        {
            "_id" : {
                "_id" : ObjectId("5051f1756a64bd2c54918b25")
            },
            "matches" : 1
        }
    ],
    "ok" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. pymongo.errors.CursorNotFound:कर्सर आईडी '...' सर्वर पर मान्य नहीं है

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

  3. मोंगोडीबी मूल बातें ट्यूटोरियल

  4. MongoDB क्वेरी के लिए अधिकृत नहीं है - कोड 13

  5. क्या मोंगोडब एग्रीगेशन फ्रेमवर्क में फ्लोर फंक्शन है?