ใช้ $strcasecmp สำหรับเปรียบเทียบข้อความ Case-Insensitive
Operator $strcasecmp ใน aggregation เปรียบเทียบสองสตริง **ไม่สนใจพิมพ์เล็ก/ใหญ่** คืนค่า: 1 (มากกว่า), 0 (เท่ากัน), -1 (น้อยกว่า)
ตัวอย่างข้อมูล
> db.demo490.insertOne({ "Name1": "John", "Name2": "john" });
> db.demo490.insertOne({ "Name1": "David", "Name2": "Bob" });
> db.demo490.insertOne({ "Name1": "Carol", "Name2": "Carol" });
Query เปรียบเทียบ Name1 กับ Name2
> db.demo490.aggregate([
{ $project: {
Name1: 1,
Name2: 1,
Result: { $strcasecmp: ["$Name1", "$Name2"] }
}}
]);
ผลลัพธ์
{ "_id": ObjectId(...), "Name1": "John", "Name2": "john", "Result": 0 }
{ "_id": ObjectId(...), "Name1": "David", "Name2": "Bob", "Result": 1 }
{ "_id": ObjectId(...), "Name1": "Carol", "Name2": "Carol", "Result": 0 }
คำอธิบายผลลัพธ์
- John vs john = 0 (เท่ากัน case-insensitive)
- David vs Bob = 1 (D > B ใน Unicode/ASCII order)
- Carol vs Carol = 0 (เหมือนกันทุกอย่าง)
String Comparison Operators อื่นๆ
| Operator | คำอธิบาย | Case Sensitive |
|---|---|---|
$strcasecmp | เปรียบเทียบ case-insensitive | ไม่ |
$strcmp | เปรียบเทียบ case-sensitive | ใช่ |
$substr / $substrBytes / $substrCP | ดึง substring | - |
$toLower / $toUpper | แปลงตัวพิมพ์ | - |
$trim / $ltrim / $rtrim | ตัด whitespace | - |