$not और $gt का उपयोग करके $lte और $in जैसी शर्त लागू करें
MongoDB में किसी ऐरे फ़ील्ड पर $lte (कम या बराबर) और $in जैसी शर्तों को संयोजित करने के लिए कभी-कभी $not और $gt का उपयोग करना पड़ता है।
उदाहरण: संग्रह बनाना
> db.queryMongoValueDemo.insertOne({
_id: 101,
"ScoreDetails": [{"Score": 80}, {"Score": 45}, {"Score": 25}, {"Score": 70}]
});
{ "acknowledged": true, "insertedId": 101 }
> db.queryMongoValueDemo.insertOne({
_id: 102,
"ScoreDetails": [{"Score": 80}, {"Score": 24}, {"Score": 34}]
});
{ "acknowledged": true, "insertedId": 102 }
> db.queryMongoValueDemo.insertOne({
_id: 103,
"ScoreDetails": [{"Score": 99}, {"Score": 95}]
});
{ "acknowledged": true, "insertedId": 103 }
सभी डॉक्यूमेंट्स देखना
> db.queryMongoValueDemo.find().pretty();
{
"_id": 101,
"ScoreDetails": [{"Score": 80}, {"Score": 45}, {"Score": 25}, {"Score": 70}]
}
{
"_id": 102,
"ScoreDetails": [{"Score": 80}, {"Score": 24}, {"Score": 34}]
}
{
"_id": 103,
"ScoreDetails": [{"Score": 99}, {"Score": 95}]
}
$lte और $in जैसी शर्त के लिए क्वेरी
यह क्वेरी उन डॉक्यूमेंट्स को ढूंढती है जहां ScoreDetails.Score 80 के बराबर है और 80 से अधिक नहीं है (यानी <= 80 और 80 मानों में से एक):
> db.queryMongoValueDemo.find({
"ScoreDetails.Score": {
"$eq": 80,
"$not": { "$gt": 80 }
}
});
आउटपुट:
{
"_id": 101,
"ScoreDetails": [{"Score": 80}, {"Score": 45}, {"Score": 25}, {"Score": 70}]
}
{
"_id": 102,
"ScoreDetails": [{"Score": 80}, {"Score": 24}, {"Score": 34}]
}
दोनों डॉक्यूमेंट्स में कम से कम एक Score: 80 है और कोई स्कोर 80 से अधिक नहीं है (पहले डॉक्यूमेंट में 80, 45, 25, 70 हैं; दूसरे में 80, 24, 34 हैं)।
स्पष्टीकरण:
$eq: 80मान 80 से मेल खाता है, और$not: {$gt: 80}सुनिश्चित करता है कि उसी ऐरे में कोई मान 80 से बड़ा न हो। यह संयोजन प्रभावी रूप से "<= 80 और 80 मौजूद है" लागू करता है।