MongoDB 4.0 से, आप $toBool
. का उपयोग कर सकते हैं मान को बूलियन में बदलने के लिए एग्रीगेशन पाइपलाइन ऑपरेटर.
जब आप किसी मान को बूलियन में बदलते हैं, तो परिणाम true
. होगा या false
, इनपुट मान के आधार पर।
आम तौर पर, संख्यात्मक मानों के लिए, यह false
लौटाएगा यदि मान शून्य है (0
), और true
किसी अन्य मूल्य के लिए।
स्ट्रिंग, ऑब्जेक्ट आईडी और दिनांक मानों के लिए, यह हमेशा true
लौटाएगा ।
उदाहरण
मान लीजिए कि हमारे पास types
. नामक संग्रह है और इसमें निम्नलिखित दस्तावेज शामिल हैं:
{ "_id" : ObjectId("60133e50c8eb4369cf6ad9d9"), "double" : 123.75, "string" : "123", "boolean" : true, "date" : ISODate("2020-12-31T23:30:15.123Z"), "integer" : 123, "long" : NumberLong(123), "decimal" : NumberDecimal("123.75") } { "_id" : ObjectId("60133e50c8eb4369cf6ad9da"), "double" : 0, "string" : "", "boolean" : false, "date" : null, "integer" : 0, "long" : NumberLong(0), "decimal" : NumberDecimal("0.0") }
हम $toBool
. का उपयोग कर सकते हैं उन सभी प्रकारों को बूलियन में बदलने के लिए ऑपरेटर। यदि इनपुट एक बूलियन है, तो यह केवल बूलियन लौटाता है।
db.types.aggregate(
[
{
$project:
{
_id: 0,
objectId: { $toBool: "$_id" },
double: { $toBool: "$double" },
string: { $toBool: "$string" },
boolean: { $toBool: "$boolean" },
date: { $toBool: "$date" },
integer: { $toBool: "$integer" },
long: { $toBool: "$long" },
decimal: { $toBool: "$decimal" }
}
}
]
).pretty()
परिणाम:
{ "objectId" : true, "double" : true, "string" : true, "boolean" : true, "date" : true, "integer" : true, "long" : true, "decimal" : true } { "objectId" : true, "double" : false, "string" : true, "boolean" : false, "date" : null, "integer" : false, "long" : false, "decimal" : false }
हम देख सकते हैं कि पहले दस्तावेज़ में सभी मान true
लौटाए गए हैं , लेकिन दूसरे दस्तावेज़ में बहुत से false
लौटाए गए . साथ ही, दिनांक मान लौटाया गया null
क्योंकि यह null
था शुरू करने के लिए।
त्रुटियां
यदि आप त्रुटियों का सामना करते हैं, तो $convert
. का उपयोग करके देखें $toBool
. के बजाय ऑपरेटर . $convert
ऑपरेटर आपको संपूर्ण एकत्रीकरण संचालन को प्रभावित किए बिना त्रुटियों को संभालने की अनुमति देता है।
$toBool
ऑपरेटर $convert
. का उपयोग करने के बराबर है मान को बूलियन में बदलने के लिए ऑपरेटर।
यहां $convert
. का उपयोग करने का एक उदाहरण दिया गया है स्ट्रिंग को बूलियन में बदलने के लिए ::
db.types.aggregate(
[
{
$project:
{
_id: 0,
result:
{
$convert: {
input: "$string",
to: "bool",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
परिणाम:
{ "result" : true }
MongoDB देखें $convert
अधिक उदाहरणों के लिए।