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

MongoDB में नया फील्ड बनाकर दूसरे फील्ड की गिनती सेट करना

MongoDB एग्रीगेशन में $addFields और $size का उपयोग करके नेस्टेड ऐरे की गिनती जोड़ना

MongoDB में $addFields और $map के साथ $size का उपयोग करके नेस्टेड ऐरे के आकार की गणना करें और नए फील्ड के रूप में जोड़ें।

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

> db.demo429.insertOne({
  "_id": 101,
  "Value": 3,
  "details": [
    {
      "Age": 29,
      "Value": 3,
      "details1": [1, 2, 3]
    },
    {
      "Age": 31,
      "Value": 4,
      "details1": [354]
    }
  ]
});
{ "acknowledged" : true, "insertedId" : 101 }

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

> db.demo429.find();

आउटपुट:

{ "_id" : 101, "Value" : 3, "details" : [ { "Age" : 29, "Value" : 3, "details1" : [ 1, 2, 3 ] }, { "Age" : 31, "Value" : 4, "details1" : [ 354 ] } ] }

नेस्टेड ऐरे details1 की गिनती जोड़ने के लिए एग्रीगेशन

> db.demo429.aggregate([
  {
    "$addFields": {
      "details": {
        "$map": {
          "input": "$details",
          "as": "d",
          "in": {
            "Age": "$$d.Age",
            "NumberOfDetails1": { "$size": "$$d.details1" }
          }
        }
      }
    }
  }
])

आउटपुट:

{ "_id" : 101, "Value" : 3, "details" : [ { "Age" : 29, "NumberOfDetails1" : 3 }, { "Age" : 31, "NumberOfDetails1" : 1 } ] }

व्याख्या:

  1. $addFields - मौजूदा फील्ड्स में नए फील्ड्स जोड़ता है या मौजूदा को ओवरराइट करता है
  2. $map - details ऐरे के प्रत्येक एलिमेंट को ट्रांसफॉर्म करता है
  3. $$d.details1 - वर्तमान एलिमेंट का details1 ऐरे
  4. $size - ऐरे की लंबाई लौटाता है
  5. नया फील्ड NumberOfDetails1 प्रत्येक सब-ऑब्जेक्ट में जुड़ जाता है

उपयोगी वेरिएशन:

// टॉप-लेवल फील्ड के रूप में गिनती जोड़ना
{$addFields: { detailsCount: { $size: "$details" } }}

// शर्त के साथ गिनती
{$addFields: { 
  activeCount: { 
    $size: { 
      $filter: { input: "$details", as: "d", cond: { $eq: ["$$d.status", "active"] } } 
    } 
  } 
}}

// $project में उपयोग
{$project: { 
  details: 1, 
  count: { $size: "$details" } 
}}

नोट: $size केवल ऐरे पर काम करता है; फील्ड गायब या नल होने पर त्रुटि देता है। $ifNull से हैंडल करें।

  1. - MongoDB क्वेरी: फील्ड के रिटर्निंग वैल्यूज को लिमिट करें

    इसके लिए $slice का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo594.insertOne({ id:1, details:[ {Name:Chris,Age:21}, {Name:Bob,Age:20}, {Name:David,Age:23}, {Name:Sam,Age:22} ] }); { acknowledged : true, insertedId : ObjectId(5e9334

  1. - MongoDB में नया फ़ील्ड जोड़कर कीमत को विभाजित करके कन्कैटनेट करना

    $addFields, $map, $divide, $toString और $reduce का उपयोग करके नया फ़ील्ड बनाएं। डेमो डेटा db.demo719.insertOne({ Number:7374644, details : { otherDetails : [ { ProductId :102, ProductPrice : NumberInt(500) }, { ProductId :103, ProductPrice : NumberInt(2000) }

  1. - MySQL में GROUP BY और COUNT() का उपयोग करके नामों द्वारा ग्रुप करके काउंट नए कॉलम में प्रदर्शित करना

    GROUP BY और COUNT() के साथ नामवार पंक्ति गिनती नाम के अनुसार रिकॉर्ड्स ग्रुप करके प्रत्येक नाम की घटनाओं को नए कॉलम में गिनने के लिए GROUP BY के साथ COUNT() का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( Name VARCHAR(30) ); रिकॉर्ड्स इन्सर्ट करें: mysql> INSERT