MongoDB में $exists के साथ ऐरे के अंदर क्वेरी करके काउंट प्राप्त करना
ऐरे के अंदर क्वेरी करके अस्तित्व जांचने और काउंट प्राप्त करने के लिए $exists का उपयोग करें।
कलेक्शन बनाना
> db.demo296.insertOne(
{
"id": 101,
"Name": "Chris",
"details": [
{ "SubjectId": [101,103], "SubjectName": ["MySQL","MongoDB"] },
{ "SubjectId": [102,104], "SubjectName": ["Java","C"] }
]
}
);
{ "acknowledged": true, "insertedId": ObjectId("5e4d51715d93261e4bc9ea3b") }
> db.demo296.insertOne(
{
"id": 102,
"Name": "David",
"details": [
{ "SubjectId": [110,113] },
{ "SubjectId": [112,114] }
]
}
);
{ "acknowledged": true, "insertedId": ObjectId("5e4d519b5d93261e4bc9ea3c") }
> db.demo296.insertOne(
{
"id": 103,
"Name": "Bob",
"details": [
{ "SubjectName": ["C++","Python"] },
{ "SubjectName": ["Spring","Hibernate"] }
]
}
);
{ "acknowledged": true, "insertedId": ObjectId("5e4d52315d93261e4bc9ea3d") }
सभी डॉक्यूमेंट्स
> db.demo296.find();
ऐरे के अंदर क्वेरी करके काउंट प्राप्त करना
> db.demo296.count( { 'details.SubjectName': { $exists: true } } );परिणाम
2व्याख्या
- count(): मिलान करने वाले डॉक्यूमेंट्स की संख्या लौटाता है
- {'details.SubjectName': {$exists: true}}: ऐसे डॉक्यूमेंट्स जहां details ऐरे के कम से कम एक तत्व में SubjectName फील्ड मौजूद है
- पहला डॉक्यूमेंट: दोनों तत्वों में SubjectName है → मेल खाता है
- तीसरा डॉक्यूमेंट: दोनों तत्वों में SubjectName है → मेल खाता है
- दूसरा डॉक्यूमेंट: किसी तत्व में SubjectName नहीं है → बाहर
- कुल: 2 डॉक्यूमेंट्स
नोट
- count() डिप्रिकेटेड है;
countDocuments()याestimatedDocumentCount()का उपयोग करें - $exists: true फील्ड की उपस्थिति जांचता है (मान null होने पर भी true)
- ऐरे फील्ड पर: ऐरे के किसी भी तत्व में फील्ड मौजूद होने पर true
वैकल्पिक: एग्रीगेशन के साथ