ใช้ $type เพื่อกรองตามชนิดข้อมูล BSON
Operator $type เลือกเอกสารที่ฟิลด์มีชนิดข้อมูลตรงตามที่ระบุ (BSON type) เช่น "number", "string", "object", "array"
ตัวอย่างข้อมูล (ผสม String และ Number)
> db.demo470.insertOne({ "Age": 23 });
> db.demo470.insertOne({ "Age": "Unknown" });
> db.demo470.insertOne({ "Age": 24 });
> db.demo470.insertOne({ "Age": "Not provided" });
Query หาเฉพาะ Age ที่เป็น Number
> db.demo470.find({ 'Age': { $type: "number" } });
ผลลัพธ์
{ "_id": ObjectId(...), "Age": 23 }
{ "_id": ObjectId(...), "Age": 24 }
BSON Type Aliases ที่ใช้ได้
| Alias | BSON Type | ตัวอย่าง |
|---|---|---|
| "double" / "number" | 1 | 1.5, 10 |
| "string" | 2 | "hello" |
| "object" | 3 | { a: 1 } |
| "array" | 4 | [1, 2, 3] |
| "binData" | 5 | Binary data |
| "objectId" | 7 | ObjectId() |
| "bool" | 8 | true/false |
| "date" | 9 | ISODate() |
| "null" | 10 | null |
| "regex" | 11 | /pattern/ |
| "int" / "long" | 16/18 | Int32, Int64 |
| "decimal" | 19 | Decimal128 |
การใช้งานร่วมกับ $or
// หา Age ที่เป็น int หรือ long
db.demo470.find({ Age: { $type: ["int", "long"] } });
// หา Age ที่เป็น number (double, int, long)
db.demo470.find({ Age: { $type: "number" } });