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 त्रुटि का कारण बनता है।$ifNullMongoDB 2.6+ में उपलब्ध है।- ऐरे फील्ड्स के लिए जो मौजूद नहीं हो सकते हैं, हमेशा फॉलबैक का उपयोग करें।