MongoDB में, $cmp
एकत्रीकरण पाइपलाइन ऑपरेटर दो मानों की तुलना करता है और या तो -1
. देता है , 1
, या 0
, इस पर निर्भर करता है कि पहला मान पहले मान से छोटा, बड़ा या उसके बराबर है या नहीं।
विशेष रूप से, $cmp
ऑपरेटर रिटर्न:
-1
यदि पहला मान दूसरे से कम है।1
यदि पहला मान दूसरे से बड़ा है।0
यदि दो मान समान हैं।
उदाहरण
मान लीजिए हमारे पास data
. नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:
{ "_id" : 1, "a" : 2, "b" : 2 } { "_id" : 2, "a" : 2, "b" : 3 } { "_id" : 3, "a" : 3, "b" : 2 }
हम $cmp
. का उपयोग कर सकते हैं a
. की तुलना करने के लिए ऑपरेटर और b
फ़ील्ड:
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $cmp: [ "$a", "$b" ] }
}
}
]
)
परिणाम:
{ "a" : 2, "b" : 2, "result" : 0 } { "a" : 2, "b" : 3, "result" : -1 } { "a" : 3, "b" : 2, "result" : 1 }
विभिन्न प्रकारों की तुलना करना
$cmp
ऑपरेटर विभिन्न प्रकार के मूल्यों के लिए निर्दिष्ट बीएसओएन तुलना क्रम का उपयोग करके मूल्य और प्रकार दोनों की तुलना करता है।
मान लीजिए हम अपने संग्रह में निम्नलिखित दस्तावेज़ जोड़ते हैं:
{ "_id" : 4, "a" : ISODate("2021-01-03T23:30:15.100Z"), "b" : ISODate("2019-12-08T04:00:20.112Z") } { "_id" : 5, "a" : 2, "b" : ISODate("2019-12-08T04:00:20.112Z") } { "_id" : 6, "a" : ISODate("2019-12-08T04:00:20.112Z"), "b" : 2 } { "_id" : 7, "a" : null, "b" : 2 } { "_id" : 8, "a" : 2, "b" : null } { "_id" : 9, "a" : null, "b" : null } { "_id" : 10, "a" : Infinity, "b" : 3 } { "_id" : 11, "a" : 2, "b" : Infinity } { "_id" : 12, "a" : Infinity, "b" : Infinity }
यहां बताया गया है कि जब हम $cmp
. लागू करते हैं तो क्या होता है नए दस्तावेज़ों के लिए:
db.data.aggregate(
[
{ $match: { _id: { $nin: [ 1, 2, 3 ] } } },
{ $project: {
a: 1,
b: 1,
result: { $cmp: [ "$a", "$b" ] }
}
}
]
).pretty()
परिणाम:
{ "_id" : 4, "a" : ISODate("2021-01-03T23:30:15.100Z"), "b" : ISODate("2019-12-08T04:00:20.112Z"), "result" : 1 } { "_id" : 5, "a" : 2, "b" : ISODate("2019-12-08T04:00:20.112Z"), "result" : -1 } { "_id" : 6, "a" : ISODate("2019-12-08T04:00:20.112Z"), "b" : 2, "result" : 1 } { "_id" : 7, "a" : null, "b" : 2, "result" : -1 } { "_id" : 8, "a" : 2, "b" : null, "result" : 1 } { "_id" : 9, "a" : null, "b" : null, "result" : 0 } { "_id" : 10, "a" : Infinity, "b" : 3, "result" : 1 } { "_id" : 11, "a" : 2, "b" : Infinity, "result" : -1 } { "_id" : 12, "a" : Infinity, "b" : Infinity, "result" : 0 }