MongoDB में $nor और $ne का उपयोग करके $and का विपरीत लागू करना
$and ऑपरेशन का तार्किक विपरीत (NOT (A AND B)) डी मॉर्गन के नियम के अनुसार (NOT A) OR (NOT B) के बराबर होता है। MongoDB में इसे $or के साथ $ne का उपयोग करके व्यक्त किया जा सकता है।
सैंपल डेटा बनाना
> db.demo4.insert({uid:1,"Name":"Chris","Age":22});
WriteResult({ "nInserted" : 1 })
> db.demo4.insert({uid:2,"Name":"David","Age":21});
WriteResult({ "nInserted" : 1 })
> db.demo4.insert({uid:3,"Name":"Bob","Age":23});
WriteResult({ "nInserted" : 1 })
> db.demo4.insert({uid:1,"Name":"Carol","Age":20});
WriteResult({ "nInserted" : 1 })
दस्तावेज़ देखना
> db.demo4.find();
आउटपुट:
इनवर्स क्वेरी: uid=2 AND (Name≠Carol OR Age≠21)
आउटपुट:
तार्किक विश्लेषण
मूल क्वेरी (काल्पनिक):
uid=2 AND Name="Carol" AND Age=21इसका विपरीत:
NOT (uid=2 AND Name="Carol" AND Age=21)डी मॉर्गन:
uid≠2 OR Name≠"Carol" OR Age≠21लेकिन उदाहरण में क्वेरी है:
uid=2 AND (Name≠"Carol" OR Age≠21)यह
uid=2वाले दस्तावेज़ों में से उनको चुनता है जहां **Name "Carol" नहीं है OR Age 21 नहीं है**।चूंकि uid=2 वाले दस्तावेज़ का Name="David" (≠Carol) है, शर्त पूरी होती है और दस्तावेज़ लौटाया जाता है।
सही इनवर्स पैटर्न्स
| मूल शर्त | विपरीत (नेगेशन) | MongoDB सिंटैक्स |
|---|---|---|
| A AND B | NOT A OR NOT B | { $or: [ { A: { $ne: ... } }, { B: { $ne: ... } } ] } |
| A OR B | NOT A AND NOT B | { $and: [ { A: { $ne: ... } }, { B: { $ne: ... } } ] } |
| { $and: [A, B] } | { $nor: [A, B] } | { $nor: [ A, B ] } |
| { $or: [A, B] } | { $nor: [A, B] } | { $nor: [ A, B ] } |
$nor का उपयोग (सरल)
$not का उपयोग