MongoDB में $reduce + $concatArrays: सरणी की सरणी को समतल करना
जब आपके पास सरणियों की सरणी (बहु-आयामी सरणी) हो और आप उसे एकल समतल सरणी में बदलना चाहें, तो $reduce के साथ $concatArrays का उपयोग करें।
नमूना डेटा
> db.demo338.insertOne({"Name": "Chris", "Marks1": [[56, 67, 45], [67, 89, 90, 91]]});
{ "acknowledged": true, "insertedId": ObjectId("5e5299baf8647eb59e56209f") }
एग्रीगेशन: समतल करना
> db.demo338.aggregate([
{
$project: {
Marks: {
$reduce: {
input: "$Marks1",
initialValue: [],
in: {$concatArrays: ["$$this", "$$value"]}
}
}
}
}
]);
परिणाम
{ "Marks": [67, 89, 90, 91, 56, 67, 45] }
$reduce सरणी के प्रत्येक उप-सरणी ($$this) पर पुनरावृत्त करता है और इसे संचयकर्ता ($$value) के साथ जोड़ता है। initialValue: [] खाली सरणी से शुरू करता है। क्रम: दूसरी उप-सरणी पहले आती है क्योंकि $$this पहले तर्क के रूप में पास किया जाता है। क्रम बदलने के लिए [$$value, $$this] का उपयोग करें।