MongoDB एग्रीगेशन में सरणी की लंबाई (तत्व गणना) प्राप्त करने के लिए, $project चरण में $size ऑपरेटर का उपयोग करें। $slice सरणी का सबसेट निकालता है; लंबाई के लिए $size सही ऑपरेटर है।
उदाहरण: विषय सरणी वाला दस्तावेज़
> db.demo382.insertOne({
"Name" : "David",
"details" : [
{ "SubjectName" : "MySQL" },
{ "SubjectName" : "MongoDB" },
{ "SubjectName" : "Java" }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b5e1c22064be7ab44e7f0") }
दस्तावेज़ देखना
> db.demo382.find().pretty();
आउटपुट: तीन तत्व वाली सरणी के साथ एक दस्तावेज़।
एग्रीगेशन: सरणी लंबाई प्राप्त करें
> db.demo382.aggregate([
{ $match: { "Name": "David" } },
{ $project: { count: { $size: "$details" } } }
]);
परिणाम
{ "_id" : ObjectId("5e5b5e1c22064be7ab44e7f0"), "count" : 3 }
व्याख्या
$matchदस्तावेज़(ओं) को फ़िल्टर करता है (वैकल्पिक)।$projectआउटपुट आकार देता है;$size: "$details"सरणी में तत्वों की संख्या की गणना करता है।$sizeसरणी पर काम करता है; यदि फील्ड अनुपस्थित/नल है, तो त्रुटि देता है (सुरक्षित उपयोग के लिए$ifNullके साथ संयोजित करें)।
$slice (संदर्भ के लिए)
$slice सरणी का सबसेट लौटाता है:
> db.demo382.aggregate([
{ $project: { firstTwo: { $slice: [ "$details", 2 ] } } }
]);
पहले 2 तत्व लौटाता है। ऋणात्मक गणना अंत से गिनती करती है।
सरणी लंबाई द्वारा फ़िल्टर करें
> db.demo382.find({ $expr: { $gt: [ { $size: "$details" }, 2 ] } });
2 से अधिक तत्व वाली सरणी वाले दस्तावेज़ ढूंढता है (MongoDB 3.6+ में $expr के साथ)।