ใช้ $type ตรวจสอบชนิดข้อมูลเป็น Null (BSON Type 10)
ใน MongoDB ค่า null มี BSON Type Code เป็น 10 สามารถใช้โอเปอเรเตอร์ $type เพื่อค้นหาเอกสารที่ฟิลด์มีค่า null ได้อย่างแม่นยำ
ตัวอย่างข้อมูล
> db.nullDemo.insertOne({"FirstName":"Chris"});
> db.nullDemo.insertOne({"FirstName":null});
> db.nullDemo.insertOne({"FirstName":"Robert"});
คิวรี: หาเอกสารที่ FirstName เป็น null
> db.nullDemo.find({ FirstName: { $type: 10 } });
ผลลัพธ์
{ "_id" : ObjectId("5cc68a25ac184d684e3fa271"), "FirstName" : null }
วิธีทางเลือกอื่นๆ
// 1. ใช้ $eq (ตรงตัว) - หา null รวมถึงฟิลด์ที่ไม่มีอยู่
db.nullDemo.find({ FirstName: null });
// 2. ใช้ $type กับ string alias (MongoDB 3.2+)
db.nullDemo.find({ FirstName: { $type: "null" } });
// 3. หาเฉพาะที่มีฟิลด์และเป็น null (ไม่รวมฟิลด์ที่ missing)
db.nullDemo.find({ FirstName: { $in: [null], $exists: true } });
ตาราง BSON Type Codes ที่นิยมใช้
| Type | Code | Alias |
|---|---|---|
| Double | 1 | "double" |
| String | 2 | "string" |
| Object | 3 | "object" |
| Array | 4 | "array" |
| Boolean | 8 | "bool" |
| Null | 10 | "null" |
| ObjectId | 7 | "objectId" |