Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में सरणी से विशिष्ट फील्ड कैसे लौटाएं?

MongoDB में सरणी के अंदर ऑब्जेक्ट्स से विशिष्ट फील्ड निकालकर लौटाने के लिए एग्रीगेशन में $project और $arrayElemAt का उपयोग करें।

उदाहरण

सबडॉक्यूमेंट सरणी वाला दस्तावेज़ बनाएं:

> db.returnSpecificFieldDemo.insertOne(
  {
    "StudentId": 1,
    "StudentDetails": [
      {"StudentName": "Larry", "StudentAge": 21, "StudentCountryName": "US"},
      {"StudentName": "Chris", "StudentAge": 23, "StudentCountryName": "AUS"}
    ]
  }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5ce23d3236e8b255a5eee943") }

दस्तावेज़ देखें:

> db.returnSpecificFieldDemo.find().pretty();
{ "_id" : ObjectId("5ce23d3236e8b255a5eee943"), "StudentId" : 1, "StudentDetails" : [ { "StudentName" : "Larry", "StudentAge" : 21, "StudentCountryName" : "US" }, { "StudentName" : "Chris", "StudentAge" : 23, "StudentCountryName" : "AUS" } ] }

दूसरे तत्व (इंडेक्स 1) का StudentCountryName प्राप्त करें

> db.returnSpecificFieldDemo.aggregate([
  {$project: {
    _id: 0,
    StudentId: "$StudentId",
    StudentCountryName: {$arrayElemAt: ["$StudentDetails.StudentCountryName", 1]}
  }}
]);

आउटपुट:

{ "StudentId" : 1, "StudentCountryName" : "AUS" }

व्याख्या:

  • $StudentDetails.StudentCountryName - सरणी के सभी ऑब्जेक्ट से StudentCountryName निकालकर सरणी बनाता है: ["US", "AUS"]
  • $arrayElemAt: [array, index] - सरणी से इंडेक्स पर तत्व लौटाता है (0-आधारित)
  • 1 - दूसरा तत्व (AUS)

सभी देशों के नाम सरणी के रूप में प्राप्त करें

db.returnSpecificFieldDemo.aggregate([
  {$project: {
    _id: 0,
    StudentId: 1,
    AllCountries: "$StudentDetails.StudentCountryName"
  }}
])
{ "StudentId" : 1, "AllCountries" : [ "US", "AUS" ] }

पहले तत्व का पूरा ऑब्जेक्ट प्राप्त करें

db.returnSpecificFieldDemo.aggregate([
  {$project: {
    _id: 0,
    StudentId: 1,
    FirstStudent: {$arrayElemAt: ["$StudentDetails", 0]}
  }}
])
{ "StudentId" : 1, "FirstStudent" : { "StudentName" : "Larry", "StudentAge" : 21, "StudentCountryName" : "US" } }

उपयोग: नेस्टेड सरणी से विशिष्ट स्थिति का डेटा निकालने, रिपोर्टिंग, UI ड्रॉपडाउन के लिए।

  1. - MongoDB में सबडॉक्यूमेंट्स के ऐरे को कैसे क्वेरी करें?

    सबडॉक्यूमेंट्स के ऐरे को क्वेरी करने के लिए MongoDB में $unwind का उपयोग करें। नमूना डेटा बनाना (सबडॉक्यूमेंट्स ऐरे) db.demo499.insertOne({ details: [ { Name:MIT, Rank: 1, CountryName:US }, { Name:Stanford University, Rank: 2 }, { Name:University of California, Berkeley, Rank: 3 }

  1. - MongoDB क्वेरी: कलेक्शन से पूरा ऐरे हटाएं

    कलेक्शन से पूरा ऐरे हटाने के लिए, MongoDB में $unset का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo609.insertOne({ListOfSubject:[MySQL,MongoDB]}); { acknowledged : true, insertedId : ObjectId(5e974695f57d0dc0b182d62c) } > db.demo609.insertOne({ListOfSubject:[Java]}); { a

  1. - MongoDB में सरणी क्वेरी करके विशिष्ट मान प्राप्त करें

    सरणी से विशिष्ट मान प्राप्त करने के लिए aggregate() के साथ $project का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo761.insertOne( { details: [ { student: { FullName: Chris Brown } } ] } ); { acknowledged : true, insertedId : ObjectId(5eb034d15637cd592b2a4af1) } > db.demo761.insertOne( { de