MongoDB 4.4 से, आप $isNumber . का उपयोग कर सकते हैं एकत्रीकरण पाइपलाइन ऑपरेटर यह जांचने के लिए कि कोई मान एक संख्या है या नहीं।
यह किसी भी मान्य व्यंजक को स्वीकार करता है, और true returns लौटाता है यदि व्यंजक एक संख्या है, false अगर ऐसा नहीं है।
विशेष रूप से, $isNumber जाँचता है कि क्या व्यंजक निम्नलिखित BSON प्रकारों में से किसी एक का समाधान करता है:
IntegerDecimalDoubleLong
यह true लौटाता है अगर ये हो।
यह false लौटाता है यदि अभिव्यक्ति किसी अन्य बीएसओएन प्रकार के लिए हल हो जाती है, null , या अनुपलब्ध फ़ील्ड।
उदाहरण
मान लीजिए हमारे पास dogs . नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "name" : "Fetch", "weight" : 30 } हम निम्नलिखित कोड का उपयोग यह देखने के लिए कर सकते हैं कि कौन से फ़ील्ड संख्यात्मक हैं:
db.dogs.aggregate(
[
{
$project:
{
_id: { $isNumber: "$_id" },
name: { $isNumber: "$name" },
weight: { $isNumber: "$weight" }
}
}
]
) परिणाम:
{ "_id" : true, "name" : false, "weight" : true }
हम देख सकते हैं कि _id और weight फ़ील्ड संख्यात्मक हैं, लेकिन name फ़ील्ड नहीं है (यह एक स्ट्रिंग है)।
उदाहरण 2
यहां एक और उदाहरण दिया गया है जिसमें विभिन्न बीएसओएन प्रकार के विभिन्न क्षेत्र शामिल हैं।
मान लीजिए कि हमारे पास types . नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{
"_id" : ObjectId("601738d7c8eb4369cf6ad9de"),
"double" : 123.75,
"string" : "123",
"boolean" : true,
"date" : ISODate("2020-12-31T23:30:15.123Z"),
"integer" : 123,
"long" : NumberLong(123),
"decimal" : NumberDecimal("123.75"),
"object" : {
"a" : 1
},
"array" : [
1,
2,
3
]
} इस लेख के उद्देश्य के लिए, मैंने प्रत्येक फ़ील्ड का नाम उसके बीएसओएन प्रकार को दर्शाने के लिए रखा है।
अब हम निम्नलिखित कोड का उपयोग true . में से किसी एक को वापस करने के लिए कर सकते हैं या false फ़ील्ड एक संख्या है या नहीं, इस पर निर्भर करते हुए प्रत्येक फ़ील्ड के लिए:
db.types.aggregate(
[
{
$project:
{
_id: { $isNumber: "$_id" },
double: { $isNumber: "$double" },
string: { $isNumber: "$string" },
boolean: { $isNumber: "$boolean" },
date: { $isNumber: "$date" },
integer: { $isNumber: "$integer" },
long: { $isNumber: "$long" },
decimal: { $isNumber: "$decimal" },
object: { $isNumber: "$object" },
array: { $isNumber: "$array" }
}
}
]
).pretty() परिणाम:
{
"_id" : false,
"double" : true,
"string" : false,
"boolean" : false,
"date" : false,
"integer" : true,
"long" : true,
"decimal" : true,
"object" : false,
"array" : false
}