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

การ Cast ชนิดข้อมูลใน MongoDB Query

ใช้ JavaScript ใน find() เพื่อ Cast

MongoDB สามารถใช้ JavaScript expression ใน find() เพื่อแปลงชนิดข้อมูลระหว่างคิวรี่ (เช่น String -> Number)

ตัวอย่าง

สร้างคอลเลกชัน castingDemo ฟิลด์ Amount เก็บเป็น String:

> db.castingDemo.insertOne({"Amount":"200"});
> db.castingDemo.insertOne({"Amount":"100"});
> db.castingDemo.insertOne({"Amount":"110"});
> db.castingDemo.insertOne({"Amount":"95"});
> db.castingDemo.insertOne({"Amount":"85"});
> db.castingDemo.insertOne({"Amount":"75"});

ค้นหา Amount > 85 (Cast String เป็น Number อัตโนมัติ)

> db.castingDemo.find("this.Amount > 85");

ผลลัพธ์:

{ "_id" : ObjectId("..."), "Amount" : "200" }
{ "_id" : ObjectId("..."), "Amount" : "100" }
{ "_id" : ObjectId("..."), "Amount" : "110" }
{ "_id" : ObjectId("..."), "Amount" : "95" }

JavaScript this.Amount จะถูกแปลงเป็นตัวเลขก่อนเปรียบเทียบ

ข้อควรระวัง

  • การใช้ JavaScript ใน find() ทำงานช้ากว่า Query ปกติ (ไม่ใช้ Index ได้)
  • แนะนำให้เก็บข้อมูลในชนิดที่ถูกต้องตั้งแต่แรก (Number แทน String)
  • MongoDB 4.0+ มี $toInt, $toDouble ใน Aggregation สำหรับ Cast อย่างเป็นทางการ