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

$arrayElemAt का उपयोग कैसे करें और MongoDB $ प्रोजेक्शन में उस तत्व से फ़ील्ड निकालें?

यह arrayElemAt के सिंटैक्स से है

जिसका अर्थ है कि आप अपने सरणी तत्वों का निर्माण कर सकते हैं, हालांकि आप चाहते हैं। आपके मामले में आप केवल नाम चाहते हैं। तो यह काम करना चाहिए:

[{
  $match: {
    jobCategoryId: mongoose.Types.ObjectId(jobCategoryId)
  }
}, {  
  $lookup: {  
    from: 'users',
    localField: 'userId',
    foreignField: '_id',
    as: 'user'
  }
}, {  
  $project: {  
    _id: 1,
    description: 1,
    title: 1,
    user: {  
      name: {
        $arrayElemAt: ["$user.name", 0]
      }
    }
  }
}]

अपडेट का पालन करें :यह पूछा गया था कि name . के शीर्ष पर अतिरिक्त गुण कैसे प्राप्त करें . ये रहा प्रोजेक्ट:

{  
  $project: {  
    _id: 1,
    description: 1,
    title: 1,
    user: {  
      name: {  
        $arrayElemAt: ["$user.name", 0]
      },
      email: {  
        $arrayElemAt: ["$user.email", 0]
      }
    }
  }
}

दूसरा अनुवर्ती जैसा कि ड्रैग0 ने टिप्पणियों में पूछा:यदि उपरोक्त पर्याप्त नहीं है क्योंकि परिणाम एक उपयोगकर्ता उत्पन्न करते हैं:[] किसी ऑब्जेक्ट उपयोगकर्ता के बजाय आकार 1 की सरणी:{} निम्नलिखित का उपयोग किया जा सकता है।

{  
  $project: {
    _id: 1,
    description: 1,
    title: 1,
    user: {
      $let: {
        vars: {
          firstUser: {
            $arrayElemAt: ["$user", 0]
          }
        },
        in: {
          name: "$$firstUser.name",
          email: "$$firstUser.email"
        }
      }
    }
  }
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी $मैक्स

  2. MongoClient उदाहरण बनाते समय अपवाद कैसे पकड़ें?

  3. स्प्रिंग डेटा और mongoDB - वंशानुक्रम और @DBRef

  4. नेवला - दिनांक को केवल दिनांक भाग के आधार पर क्रमबद्ध करें, समय को अनदेखा करें

  5. MongoDB:किसी फ़ील्ड के मान को अपडेट करने के लिए $concat का उपयोग करने में समस्या