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

मैंगोज़ का उपयोग करके स्ट्रिंग के हिस्से वाले सभी मान कैसे प्राप्त करें?

आपने अपने टैग में इसका लगभग स्वयं उत्तर दिया है। MongoDB में एक $regex है ऑपरेटर जो एक नियमित अभिव्यक्ति को एक प्रश्न के रूप में प्रस्तुत करने की अनुमति देता है। तो आप "एलेक्स" युक्त स्ट्रिंग्स के लिए क्वेरी करते हैं, आप ऐसा करते हैं:

Books.find(
    { "authors": { "$regex": "Alex", "$options": "i" } },
    function(err,docs) { 
    } 
);

आप यह भी कर सकते हैं:

Books.find(
    { "authors": /Alex/i }, 
    function(err,docs) { 

    }
);

दस्तावेज़ में दिखाए गए अनुसार सही समर्थित सिंटैक्स में आपने जिस तरह से प्रयास किया, दोनों मान्य और भिन्न हैं।

लेकिन निश्चित रूप से यदि आप वास्तव में पूछ रहे हैं कि "सरणी' परिणाम केवल उन लोगों के लिए कैसे प्राप्त करें जो स्ट्रिंग में कहीं 'एलेक्स' से मेल खाते हैं?" तो यह थोड़ा अलग है।

एक . से अधिक के लिए जटिल मिलान array एलिमेंट एग्रीगेशन फ्रेमवर्क का डोमेन है (या संभवतः mapReduce, लेकिन यह बहुत धीमा है), जहां आपको ऐरे कंटेंट को "फ़िल्टर" करने की आवश्यकता होती है।

आप बहुत कुछ उसी से शुरू करते हैं। यहां कुंजी है $unwind अलग-अलग दस्तावेज़ों के रूप में ठीक से "फ़िल्टर" करने में सक्षम होने के लिए सरणी सामग्री को "डी-सामान्यीकृत" करने के लिए। फिर "मिलान" दस्तावेज़ों के साथ सरणी का पुन:निर्माण करें।

Books.aggregate(
    [
        // Match first to reduce documents to those where the array contains the match
        { "$match": {
            "authors": { "$regex": "Alex", "$options": i }
        }},

        // Unwind to "de-normalize" the document per array element
        { "$unwind": "$authors" },

        // Now filter those document for the elements that match
        { "$match": {
            "authors": { "$regex": "Alex", "$options": i }
        }},

        // Group back as an array with only the matching elements
        { "$group": {
            "_id": "$_id",
            "title": { "$first": "$title" },
            "authors": { "$push": "$authors" },
            "subjects": { "$first": "$subjects" }
        }}
    ],
    function(err,results) {

    }
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongo में यादृच्छिक रूप से परिणाम सेट करने का आदेश देना

  2. एक सरणी को फ़िल्टर करने और संबंधित सामग्री को पॉप्युलेट करने के लिए नेवला क्वेरी

  3. क्लाउड में ओपन सोर्स डेटाबेस का स्वचालन और प्रबंधन - ClusterControl की घोषणा 1.6

  4. स्केलग्रिड ने Amazon AWS पर साझा MongoDB होस्टिंग की घोषणा की

  5. क्या मैं तिथि के अनुसार MongoDB ObjectId को क्वेरी कर सकता हूं?