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

MongoDB में $concatArrays को कैसे लागू करें जब कुछ मान null हों?

MongoDB में $ifNull के साथ null-सुरक्षित ऐरे कंसीनिटेशन

$concatArrays ऑपरेटर के लिए आवश्यक है कि सभी इनपुट ऐरे हों। Null या अनुपस्थित फील्ड्स को शालीनता से संभालने के लिए, प्रत्येक ऐरे इनपुट को खाली ऐरे फॉलबैक के साथ $ifNull में लपेटें।

नमूना डेटा बनाना

> db.concatenateArraysDemo.insertOne({
  "FirstSemesterSubjects": ["MongoDB","MySQL","Java"],
  "SecondSemesterSubjects": ["C","C++"]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd687707924bb85b3f4895c") }

> db.concatenateArraysDemo.insertOne({
  "FirstSemesterSubjects": ["C#","Ruby","Python"]
  // SecondSemesterSubjects अनुपस्थित/नल
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd687927924bb85b3f4895d") }

> db.concatenateArraysDemo.insertOne({
  "FirstSemesterSubjects": ["HTML","CSS","Javascript"],
  "SecondSemesterSubjects": ["CSS","Javascript"]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd687bb7924bb85b3f4895e") }

सभी डॉक्यूमेंट्स देखना

> db.concatenateArraysDemo.find().pretty();

आउटपुट:

{ "_id" : ObjectId("5cd687707924bb85b3f4895c"), "FirstSemesterSubjects" : [ "MongoDB", "MySQL", "Java" ], "SecondSemesterSubjects" : [ "C", "C++" ] }
{ "_id" : ObjectId("5cd687927924bb85b3f4895d"), "FirstSemesterSubjects" : [ "C#", "Ruby", "Python" ] }
{ "_id" : ObjectId("5cd687bb7924bb85b3f4895e"), "FirstSemesterSubjects" : [ "HTML", "CSS", "Javascript" ], "SecondSemesterSubjects" : [ "CSS", "Javascript" ] }

Null हैंडलिंग के साथ ऐरे कंसीनिटेट करना

> db.concatenateArraysDemo.aggregate([
  {
    $project: {
      ConcatenateArrays: {
        '$concatArrays': [
          { $ifNull: ['$FirstSemesterSubjects', []] },
          { $ifNull: ['$SecondSemesterSubjects', []] }
        ]
      }
    }
  }
]);

आउटपुट:

{ "_id" : ObjectId("5cd687707924bb85b3f4895c"), "ConcatenateArrays" : [ "MongoDB", "MySQL", "Java", "C", "C++" ] }
{ "_id" : ObjectId("5cd687927924bb85b3f4895d"), "ConcatenateArrays" : [ "C#", "Ruby", "Python" ] }
{ "_id" : ObjectId("5cd687bb7924bb85b3f4895e"), "ConcatenateArrays" : [ "HTML", "CSS", "Javascript", "CSS", "Javascript" ] }

व्याख्या

  • $ifNull: [expression, replacement] - यदि एक्सप्रेशन null या अनुपस्थित है तो replacement लौटाता है।
  • [] - खाली ऐरे फॉलबैक सुनिश्चित करता है कि $concatArrays को हमेशा वैध ऐरे इनपुट प्राप्त हों।
  • दूसरा डॉक्यूमेंट जिसमें SecondSemesterSubjects नहीं है, वह खाली ऐरे के साथ शालीनता से संभालता है।

सामान्य पैटर्न: मल्टीपल ऑप्शनल ऐरे

{ $project: {
  allItems: {
    $concatArrays: [
      { $ifNull: ["$array1", []] },
      { $ifNull: ["$array2", []] },
      { $ifNull: ["$array3", []] }
    ]
  }
}}

मुख्य बिंदु

  • $concatArrays के लिए सभी इनपुट ऐरे होना आवश्यक है; null त्रुटि का कारण बनता है।
  • $ifNull MongoDB 2.6+ में उपलब्ध है।
  • ऐरे फील्ड्स के लिए जो मौजूद नहीं हो सकते हैं, हमेशा फॉलबैक का उपयोग करें।
  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 दस्तावेज़ों में नल वैल्यूज़ को अनदेखा करना

    ऐरे में null वैल्यूज़ को बाहर करने के लिए $ne: null के साथ $match का उपयोग करें। डेमो डेटा db.demo722.insertOne({ id:101, details: [ { Name: }, { Name: David }, { Name:null }, { Name:Carol } ] }); क्वेरी db.demo722.aggregate([ {$unwind: $details},

  1. - MySQL में मान समान होने पर विशिष्ट रो कैसे फेच करें

    जब मान समान हों तो विशिष्ट रो फेच करने के लिए GROUP BY का उपयोग करें। पहले एक टेबल बनाते हैं: mysql> create table DemoTable659(Id int,Name varchar(100),Score int); Query OK, 0 rows affected (0.52 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable659 value