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

MongoDB एग्रीगेशन में ऐरे से केवल मान प्राप्त करना

MongoDB में $map का उपयोग करके ऑब्जेक्ट्स के ऐरे से केवल मान निकालना

MongoDB एग्रीगेशन में $map ऑपरेटर का उपयोग करके ऑब्जेक्ट्स के ऐरे को ट्रांसफॉर्म करें और केवल वांछित फील्ड्स के मानों का ऐरे बनाएं।

उदाहरण: संग्रह और दस्तावेज़ बनाना

> db.demo411.insertOne(
  {
    "Information" : [
      { "Name1" : "Chris", "Name2" : "David" },
      { "Name1" : "John", "Name2" : "John" }
    ]
  }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e70f19715dc524f70227682") }

दस्तावेज़ देखना

> db.demo411.find();

आउटपुट:

{ "_id" : ObjectId("5e70f19715dc524f70227682"), "Information" : [ { "Name1" : "Chris", "Name2" : "David" }, { "Name1" : "John", "Name2" : "John" } ] }

केवल Name1 और Name2 मानों का ऐरे प्राप्त करना

> db.demo411.aggregate([
  {$project : {
    _id : 0,
    Information : {
      $map : {
        input : "$Information",
        as : "out",
        in : ["$$out.Name1", "$$out.Name2"]
      }
    }
  }}
])

आउटपुट:

{ "Information" : [ [ "Chris", "David" ], [ "John", "John" ] ] }

व्याख्या:

  • $map - इनपुट ऐरे के प्रत्येक एलिमेंट को ट्रांसफॉर्म करता है
  • input: "$Information" - स्रोत ऐरे
  • as: "out" - प्रत्येक एलिमेंट के लिए वेरिएबल (यहां प्रत्येक ऑब्जेक्ट)
  • in: ["$$out.Name1", "$$out.Name2"] - आउटपुट ऐरे के लिए नया मान (दो मानों का ऐरे)
  • $$out.Name1 - वर्तमान एलिमेंट का Name1 फील्ड

अन्य उपयोगी पैटर्न:

// केवल एक फील्ड के मान
in: "$$out.Name1"
// आउटपुट: [ "Chris", "John" ]

// ऑब्जेक्ट के रूप में
in: { first: "$$out.Name1", second: "$$out.Name2" }
// आउटपुट: [ {first: "Chris", second: "David"}, {first: "John", second: "John"} ]

// शर्त के साथ
in: { $cond: [{$eq: ["$$out.Name1", "Chris"]}, "$$out", "SKIP"] }
// फिर $filter से "SKIP" हटाएं

$map vs $project: $map ऐरे ट्रांसफॉर्मेशन के लिए है; $project दस्तावेज़ फील्ड्स आकार देने के लिए।

  1. - MongoDB में Average से ऊपर के Values वाले Documents Select करना

    MongoDB में average से ऊपर के values वाले documents select करने के लिए aggregate() का उपयोग करें। Average find करने के लिए $avg का उपयोग करें। Collection बनाना > db.demo552.insertOne({values:10}); { acknowledged : true, insertedId : ObjectId(5e8e3b1c9e5f92834d7f05ea) } > db.demo552.insertOne(

  1. - MongoDB कलेक्शन से यूनिक मान प्राप्त करें

    यूनिक मान प्राप्त करने और डुप्लिकेट को अनदेखा करने के लिए, MongoDB में distinct() का उपयोग करें। distinct() एक सिंगल कलेक्शन में निर्दिष्ट फील्ड के लिए विशिष्ट मान ढूंढता है और परिणाम को एक ऐरे में लौटाता है। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo704.insertOne({LanguageCode:hi});

  1. - MongoDB में विशिष्ट तत्वों के लिए अधिकतम मान कैसे प्राप्त करें?

    विशिष्ट तत्वों के लिए अधिकतम मान प्राप्त करने के लिए MongoDB aggregate() में $sort और $group का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo750.insertOne({id:101,value:50}); { acknowledged : true, insertedId : ObjectId(5eae74b2a930c785c834e566) } > db.demo750.insertOne({id:102,value:40});