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

मोंगोडब में सबरे मूल्य निकालें

आपके मूल उदाहरण में आपके पास कुछ सिंटैक्स है जो शायद वह नहीं कर रहा है जिसकी आप अपेक्षा करते हैं .. ऐसा लगता है कि आपका इरादा केवल एक विशिष्ट प्रकार के स्कोर से मेल खाना था (आपके उदाहरण में 'परीक्षा', आपके विवरण द्वारा 'क्विज़' )।

MongoDB 2.2 शेल का उपयोग करने वाले कुछ उदाहरण नीचे दिए गए हैं।

$elemMatch प्रक्षेपण

आप $elemMatch प्रोजेक्शन का उपयोग कर सकते हैं किसी सरणी में पहला मिलान करने वाला तत्व वापस करने के लिए:

db.students.find(
    // Search criteria
    { '_id': 22 },

    // Projection
    { _id: 0, scores: { $elemMatch: { type: 'exam' } }}
)

परिणाम प्रत्येक दस्तावेज़ के लिए सरणी का मिलान तत्व होगा, जैसे:

{ "scores" : [ { "type" : "exam", "score" : 75.04996547553947 } ] }

एकत्रीकरण फ्रेमवर्क

यदि आप एक से अधिक मिलान मान प्रदर्शित करना चाहते हैं या पूर्ण मिलान सरणी तत्व को वापस करने के बजाय परिणाम दस्तावेज़ को फिर से आकार देना चाहते हैं, तो आप एग्रीगेशन फ्रेमवर्क :

db.students.aggregate(
    // Initial document match (uses index, if a suitable one is available)
    { $match: {
        '_id': 22, 'scores.type' : 'exam'
    }},

    // Convert embedded array into stream of documents
    { $unwind: '$scores' },

    // Only match scores of interest from the subarray
    { $match: {
        'scores.type' : 'exam'
    }},

    // Note: Could add a `$group` by _id here if multiple matches are expected

    // Final projection: exclude fields with 0, include fields with 1
    { $project: {
        _id: 0,
        score: "$scores.score"
    }}
)

इस मामले में परिणाम शामिल होंगे:

{ "result" : [ { "score" : 75.04996547553947 } ], "ok" : 1 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoDB एकत्रीकरण में $ मैच के भीतर $cond का उपयोग करें

  2. MongoDB में आयु की गणना करने के लिए दिनांक अंतर को वर्षों में बदलें

  3. एक सरणी के भीतर दस्तावेज़ों को हटाने के लिए MongoDB $pull का उपयोग करना

  4. MongoDB डेटाबेस में सब कुछ हटाएं

  5. मोंगोडब में एंबेडेड एरेज़ वीएस फ्लैट दस्तावेज़ों के लिए पेशेवर और विपक्ष क्या हो सकता है?