MongoDB में $type ऑपरेटर का उपयोग करके null मानों की जांच करना
MongoDB $type ऑपरेटर का उपयोग करके BSON प्रकार द्वारा फील्ड्स को फ़िल्टर करने का समर्थन करता है। Type 10 ("null" या 10) स्पष्ट रूप से null मान वाले फील्ड्स से मेल खाता है, अनुपस्थित फील्ड्स या खाली स्ट्रिंग्स से नहीं।
BSON प्रकार संदर्भ (सामान्य)
| प्रकार | संख्या | उपनाम |
|---|---|---|
| Double | 1 | "double" |
| String | 2 | "string" |
| Object | 3 | "object" |
| Array | 4 | "array" |
| Binary data | 5 | "binData" |
| Undefined | 6 | "undefined" |
| ObjectId | 7 | "objectId" |
| Boolean | 8 | "bool" |
| Date | 9 | "date" |
| Null | 10 | "null" |
| Regular Expression | 11 | "regex" |
Null के लिए सिंटैक्स
db.yourCollectionName.find({ "yourFieldName": { $type: 10 } });
या उपनाम का उपयोग करके:
db.yourCollectionName.find({ "yourFieldName": { $type: "null" } });
नमूना डेटा बनाना
> db.mongoDbEqualDemo.insertOne({"Age":34});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7e9121a844af18acdffa3") }
> db.mongoDbEqualDemo.insertOne({"Age":""});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7e9161a844af18acdffa4") }
> db.mongoDbEqualDemo.insertOne({"Age":null});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7e9191a844af18acdffa5") }
> db.mongoDbEqualDemo.insertOne({"Age":56});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7e91e1a844af18acdffa6") }
> db.mongoDbEqualDemo.insertOne({});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7e9261a844af18acdffa7") }
> db.mongoDbEqualDemo.insertOne({"Age":null});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7e92e1a844af18acdffa8") }
सभी डॉक्यूमेंट्स देखना
> db.mongoDbEqualDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd7e9121a844af18acdffa3"), "Age" : 34 }
{ "_id" : ObjectId("5cd7e9161a844af18acdffa4"), "Age" : "" }
{ "_id" : ObjectId("5cd7e9191a844af18acdffa5"), "Age" : null }
{ "_id" : ObjectId("5cd7e91e1a844af18acdffa6"), "Age" : 56 }
{ "_id" : ObjectId("5cd7e9261a844af18acdffa7") } // Age फील्ड अनुपस्थित
{ "_id" : ObjectId("5cd7e92e1a844af18acdffa8"), "Age" : null }
केवल null मान वाले डॉक्यूमेंट्स के लिए क्वेरी करना
> db.mongoDbEqualDemo.find({ "Age": { $type: 10 } });
आउटपुट:
{ "_id" : ObjectId("5cd7e9191a844af18acdffa5"), "Age" : null }
{ "_id" : ObjectId("5cd7e92e1a844af18acdffa8"), "Age" : null }
मुख्य अंतर
| क्वेरी | मेल खाता है |
|---|---|
{ Age: null } | null मान और अनुपस्थित फील्ड दोनों |
{ Age: { $type: 10 } } | केवल स्पष्ट null मान (BSON प्रकार 10) |
{ Age: { $exists: false } } | केवल अनुपस्थित फील्ड |
{ Age: "" } | केवल खाली स्ट्रिंग |
मुख्य बिंदु
- स्पष्ट null मानों (अनुपस्थित फील्ड्स या खाली स्ट्रिंग्स नहीं) से मिलान करने के लिए
$type: 10या$type: "null"का उपयोग करें। { field: null }null और** अनुपस्थित फील्ड्स दोनों से मेल खाता है - एक सामान्य गड़बड़ी।- संस्करणों में पोर्टेबिलिटी के लिए संख्यात्मक कोड (10) के बजाय उपनाम ("null") पसंद किया जाता है।