MongoDB में प्रति-दस्तावेज़ सरणी लंबाई गिनना
प्रत्येक दस्तावेज़ में सरणी फ़ील्ड के तत्वों की संख्या गिनने के लिए, एग्रीगेशन में $size ऑपरेटर का उपयोग करें। सरणी न होने की स्थिति को संभालने के लिए $cond और $isArray के साथ संयोजित करें।
नमूना डेटा
> db.demo332.insertOne({details: [{Name: "Chris", Age: 21}]});
{ "acknowledged": true, "insertedId": ObjectId("5e521f16f8647eb59e56208e") }
> db.demo332.insertOne({details: [{Name: "David", Age: 23}, {Name: "Bob", Age: 22}]});
{ "acknowledged": true, "insertedId": ObjectId("5e521f21f8647eb59e56208f") }
एग्रीगेशन: सरणी आकार गिनना
> db.demo332.aggregate([
{$project: {
numberOfDocuments: {
$cond: {
if: {$isArray: "$details"},
then: {$size: "$details"},
else: "No Documents"
}
}
}}
]);
परिणाम
{ "numberOfDocuments": 1 }
{ "numberOfDocuments": 2 }
प्रत्येक दस्तावेज़ के लिए उसकी details सरणी की लंबाई लौटाई गई। $size केवल एग्रीगेशन में काम करता है, सामान्य find() क्वेरी में नहीं। गैर-सरणी मानों के लिए फॉलबैक मान प्रदान किया गया है।