MongoDB में $exists और ऐरे इंडेक्स से वैल्यू एक्जिस्टेंस चेक करना
MongoDB में किसी ऐरे फील्ड में कम से कम एक एलिमेंट है या नहीं, यह जांचने के लिए ऐरे इंडेक्स (0) के साथ $exists ऑपरेटर का उपयोग करें।
उदाहरण: कलेक्शन और डॉक्यूमेंट्स बनाना
> db.checkIfValueDemo.insertOne({"PlayerName":"John Smith","PlayerScores":[5000,98595858,554343]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6f507af8e7a4ca6b2ad98") }
> db.checkIfValueDemo.insertOne({"PlayerName":"John Doe","PlayerScores":[]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6f512af8e7a4ca6b2ad99") }
> db.checkIfValueDemo.insertOne({"PlayerName":"Carol Taylor","PlayerScores":[7848474,8746345353]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6f521af8e7a4ca6b2ad9a") }
> db.checkIfValueDemo.insertOne({"PlayerName":"David Miller","PlayerScores":[]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6f531af8e7a4ca6b2ad9b") }
सभी डॉक्यूमेंट्स देखना
> db.checkIfValueDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cc6f507af8e7a4ca6b2ad98"), "PlayerName" : "John Smith", "PlayerScores" : [ 5000, 98595858, 554343 ] }
{ "_id" : ObjectId("5cc6f512af8e7a4ca6b2ad99"), "PlayerName" : "John Doe", "PlayerScores" : [ ] }
{ "_id" : ObjectId("5cc6f521af8e7a4ca6b2ad9a"), "PlayerName" : "Carol Taylor", "PlayerScores" : [ 7848474, 8746345353 ] }
{ "_id" : ObjectId("5cc6f531af8e7a4ca6b2ad9b"), "PlayerName" : "David Miller", "PlayerScores" : [ ] }
कम से कम एक स्कोर वाले डॉक्यूमेंट्स गिनना
> db.checkIfValueDemo.find({'PlayerScores.0' : {$exists: true}}).count();
आउटपुट:
2
व्याख्या:
PlayerScores.0- ऐरे के पहले एलिमेंट (इंडेक्स 0) को संदर्भित करता है{$exists: true}- जांचता है कि यह एलिमेंट मौजूद है- खाली ऐरे
[]में इंडेक्स 0 नहीं होता, इसलिए मैच नहीं करते
अल्टरनेटिव मेथड्स:
{ PlayerScores: { $ne: [] } }- खाली ऐरे नहीं{ PlayerScores: { $exists: true, $not: { $size: 0 } } }- मौजूद है और साइज 0 नहीं{ $expr: { $gt: [{ $size: "$PlayerScores" }, 0] } }- एग्रीगेशन एक्सप्रेशन (MongoDB 3.6+)