Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

วิธีใช้ $type ใน MongoDB สำหรับกรองตามชนิดข้อมูล


Operator $type: Match เอกสารตาม BSON Type

Operator $type เลือกเอกสารที่ฟิลด์มีชนิดข้อมูลตรงกับที่ระบุ ใช้ alias string หรือ numeric type code

ตัวอย่างข้อมูล (ผสม Number และ String)

> db.demo615.insert({ "Value": 100 });
> db.demo615.insert({ "Value": "100" });
> db.demo615.insert({ "Value": "300" });
> db.demo615.insert({ "Value": 300 });

Query หาเฉพาะ String

> db.demo615.find({ "Value": { $type: "string" } });

ผลลัพธ์

{ "_id": ObjectId(...), "Value": "100" }
{ "_id": ObjectId(...), "Value": "300" }

Type Aliases ทั้งหมด (MongoDB 3.2+)

AliasType Numberคำอธิบาย
double / number164-bit floating point
string2UTF-8 string
object3Embedded document
array4Array
binData5Binary data
undefined6Deprecated
objectId7ObjectId
bool8Boolean
date9UTC datetime
null10Null value
regex11Regular expression
dbPointer12Deprecated
javascript13JavaScript code
symbol14Deprecated
javascriptWithScope15JavaScript with scope
int1632-bit integer
timestamp17Timestamp
long1864-bit integer
decimal19128-bit decimal
minKey255Internal
maxKey127Internal

การใช้งานแบบ Array (Multiple Types)

// หา Value ที่เป็น string หรือ number
db.demo615.find({ Value: { $type: ["string", "number"] } });

// หา Value ที่เป็น int หรือ long
db.demo615.find({ Value: { $type: ["int", "long"] } });

Use Cases

  • Data quality check - หาข้อมูลผิดชนิด
  • Migration - ระบุเอกสารที่ต้องแปลงชนิด
  • Polymorphic schema - จัดการฟิลด์ที่มีหลายชนิด
  • Debug - ตรวจสอบข้อมูลที่ insert ผิด