MongoDB में डॉट नोटेशन का उपयोग करके नेस्टेड फील्ड पर $gt क्वेरी करना
$gt (ग्रेटर दैन) ऑपरेटर उन डॉक्यूमेंट्स को चुनता है जहां एक फील्ड का मान निर्दिष्ट मान से अधिक है। एम्बेडेड डॉक्यूमेंट्स (हैश/ऑब्जेक्ट्स) के अंदर फील्ड्स पर इसका उपयोग करने के लिए, डॉट नोटेशन का उपयोग करें।
नमूना डेटा बनाना
> db.performQueryDemo.insertOne({
"PlayerDetails": { "PlayerScore": 1000, "PlayerLevel": 2 },
"PlayerName": "Chris"
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7eba41a844af18acdffa9") }
> db.performQueryDemo.insertOne({
"PlayerDetails": { "PlayerScore": 0, "PlayerLevel": 1 },
"PlayerName": "Robert"
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7ebbb1a844af18acdffaa") }
> db.performQueryDemo.insertOne({
"PlayerDetails": { "PlayerScore": -10, "PlayerLevel": 0 },
"PlayerName": "Larry"
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7ebd41a844af18acdffab") }
> db.performQueryDemo.insertOne({
"PlayerDetails": { "PlayerScore": 1, "PlayerLevel": 1 },
"PlayerName": "David"
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7ebe31a844af18acdffac") }
सभी डॉक्यूमेंट्स देखना
> db.performQueryDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd7eba41a844af18acdffa9"), "PlayerDetails" : { "PlayerScore" : 1000, "PlayerLevel" : 2 }, "PlayerName" : "Chris" }
{ "_id" : ObjectId("5cd7ebbb1a844af18acdffaa"), "PlayerDetails" : { "PlayerScore" : 0, "PlayerLevel" : 1 }, "PlayerName" : "Robert" }
{ "_id" : ObjectId("5cd7ebd41a844af18acdffab"), "PlayerDetails" : { "PlayerScore" : -10, "PlayerLevel" : 0 }, "PlayerName" : "Larry" }
{ "_id" : ObjectId("5cd7ebe31a844af18acdffac"), "PlayerDetails" : { "PlayerScore" : 1, "PlayerLevel" : 1 }, "PlayerName" : "David" }
स्कोर > 0 वाले खिलाड़ियों के लिए क्वेरी करना
> db.performQueryDemo.find({ "PlayerDetails.PlayerScore": { $gt: 0 } });
आउटपुट:
{ "_id" : ObjectId("5cd7eba41a844af18acdffa9"), "PlayerDetails" : { "PlayerScore" : 1000, "PlayerLevel" : 2 }, "PlayerName" : "Chris" }
{ "_id" : ObjectId("5cd7ebe31a844af18acdffac"), "PlayerDetails" : { "PlayerScore" : 1, "PlayerLevel" : 1 }, "PlayerName" : "David" }
व्याख्या
PlayerDetails.PlayerScore- डॉट नोटेशन एम्बेडेडPlayerDetailsऑब्जेक्ट के अंदरPlayerScoreफील्ड तक पहुंचता है।$gt: 0- उन डॉक्यूमेंट्स से मेल खाता है जहां नेस्टेड फील्ड मान 0 से सख्ती से अधिक है।- Chris (1000) और David (1) मेल खाते हैं; Robert (0) और Larry (-10) नहीं।
तुलना ऑपरेटर्स सारांश
| ऑपरेटर | अर्थ |
|---|---|
$gt | > (ग्रेटर दैन) |
$gte | >= (ग्रेटर दैन इक्वल) |
$lt | < (कम दैन) |
$lte | <= (कम दैन इक्वल) |
$ne | ≠ (नॉट इक्वल) |
$in | सरणी में मौजूद |
$nin | सरणी में मौजूद नहीं |
मुख्य बिंदु
- नेस्टेड फील्ड्स तक पहुंचने के लिए डॉट नोटेशन (
parent.child) का उपयोग करें। - तुलना ऑपरेटर्स (
$gt,$lt, आदि) नेस्टेड फील्ड्स पर वैसे ही काम करते हैं जैसे टॉप-लेवल फील्ड्स पर। - नेस्टेड फील्ड्स पर इंडेक्स बनाए जा सकते हैं:
db.collection.createIndex({ "PlayerDetails.PlayerScore": 1 })।