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

MongoDB एग्रीगेशन में $slice का उपयोग करके सरणी की लंबाई कैसे प्राप्त करें?

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 के साथ)।

  1. - MongoDB $unwind: गिनती प्राप्त करने के लिए उपयोग करें

    MongoDB में $unwind इनपुट दस्तावेज़ों से ऐरे फ़ील्ड को डी-कंस्ट्रक्ट करता है ताकि प्रत्येक एलिमेंट के लिए एक दस्तावेज़ आउटपुट हो। गिनती प्राप्त करने के लिए $unwind के साथ aggregate() का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo478.insertOne( ... { ... ...    "D

  1. - MongoDB aggregate से डुप्लिकेट नामों के संबंधित फील्ड मानों की गिनती प्राप्त करें

    उदाहरण देखते हैं और डॉक्यूमेंट्स के साथ एक कलेक्शन बनाते हैं: > db.demo558.insertOne( ... { _id : 100, CountryCode:101, details: [ ... { Name:Chris, Subject:MySQL }, ... { Name:Chris, Subject:MongoDB }, ... { Name:Chris, Subject:Java }, ... { Name:Bob, Subject:Python }, ... { Name:Bob, Subject:J

  1. - MongoDB एग्रीगेशन: दस्तावेज और ऐरे एलिमेंट्स से औसत प्राप्त करें

    इसके लिए, $avg के साथ $group और aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo598.insertOne({ Information:Student, id:100, details:[ {Name:Chris,Marks:75}, {Name:Bob,Marks:55} ] }); { acknowledged : true, insertedId : ObjectId(5e9