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

क्या उसी संग्रह पर क्वेरी प्रोजेक्शन का उपयोग करना संभव है जिसमें $elemMatch प्रोजेक्शन है?

हां ऐसा करने के दो तरीके हैं। तो आप या तो $elemMatch प्रोजेक्शन साइड पर जैसा कि आपके पास पहले से है, थोड़े बदलाव के साथ:

Model.findById(id,
   { "comments": { "$elemMatch": {"created.by": "Jane" } } },
   function(err,doc) {

या बस क्वेरी भाग में जोड़ें और स्थितीय $ . का उपयोग करें ऑपरेटर:

Model.findOne(
    { "_id": id, "comments.created.by": "Jane" },
    { "comments.$": 1 },
    function(err,doc) {

कोई भी तरीका पूरी तरह से मान्य है।

यदि आप चाहते हैं कि इसमें कुछ और शामिल हो, तो आप .एग्रीगेट () विधि और यह है $project इसके बजाय ऑपरेटर:

Model.aggregate([
    // Still match the document
    { "$match": "_id": id, "comments.created.by": "Jane" },

    // Unwind the array
    { "$unwind": "$comments" },

    // Only match elements, there can be more than 1
    { "$match": "_id": id, "comments.created.by": "Jane" },

    // Project only what you want
    { "$project": {
        "comments": {
            "body": "$comments.body",
            "by": "$comments.created.by"
        }
    }},

    // Group back each document with the array if you want to
    { "$group": {
        "_id": "$_id",
        "comments": { "$push": "$comments" }
    }}
],
function(err,result) {

तो एकत्रीकरण ढांचे का उपयोग केवल परिणामों को एकत्रित करने से कहीं अधिक के लिए किया जा सकता है। यह $project है .find() . का उपयोग करके प्रोजेक्शन के लिए उपलब्ध होने की तुलना में ऑपरेटर आपको अधिक लचीलापन देता है . यह आपको कई सरणी परिणामों को फ़िल्टर करने और वापस करने की भी अनुमति देता है, जो कुछ ऐसा भी है जो .find() में प्रक्षेपण के साथ नहीं किया जा सकता है। ।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:क्या थोक संचालन ओप्लॉग को समग्र रूप से लिखा जाता है?

  2. जब आप django में मॉडल माइग्रेट करते हैं तो SQLdecode त्रुटि को कैसे हल करें?

  3. MongoDB और Nodejs के साथ दिनांक सम्मिलित करना और क्वेरी करना

  4. कैसे mongo स्वचालित रूप से node.js सर्वर में पुन:कनेक्ट करने के लिए?

  5. मोंगोडब में विरासत के बारे में जानकारी कैसे स्टोर करें?