ตัวดำเนินการ Query ใน MongoDB
บทนำ
MongoDB มีตัวดำเนินการ Query ที่หลากหลายเพื่อเพิ่มความยืดหยุ่นในการสืบค้นข้อมูล ตัวดำเนินการเหล่านี้ช่วยให้คุณสามารถกรองเอกสารตามเงื่อนไขเฉพาะ ทำการเปรียบเทียบ และทำงานกับอาเรย์หรือเอกสารที่ฝังอยู่
1. ตัวดำเนินการเปรียบเทียบ (Comparison Operators)
ใช้เพื่อเปรียบเทียบค่าภายในเอกสาร
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
$eq | ตรงกับค่าที่กำหนด | { age: { $eq: 25 } } |
$ne | ไม่ตรงกับค่าที่กำหนด | { age: { $ne: 25 } } |
$gt | มากกว่าค่าที่กำหนด | { age: { $gt: 25 } } |
$gte | มากกว่าหรือเท่ากับค่าที่กำหนด | { age: { $gte: 25 } } |
$lt | น้อยกว่าค่าที่กำหนด | { age: { $lt: 25 } } |
$lte | น้อยกว่าหรือเท่ากับค่าที่กำหนด | { age: { $lte: 25 } } |
$in | ตรงกับค่าที่อยู่ในอาเรย์ | { age: { $in: [25, 30, 35] } } |
$nin | ไม่ตรงกับค่าที่อยู่ในอาเรย์ | { age: { $nin: [25, 30, 35] } } |
2. ตัวดำเนินการทางตรรกะ (Logical Operators)
ใช้รวมเงื่อนไขหลายๆ เงื่อนไข
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
$and | รวมเงื่อนไขด้วย AND | { $and: [ { age: { $gt: 25 } }, { city: "New York" } ] } |
$or | รวมเงื่อนไขด้วย OR | { $or: [ { age: { $lt: 25 } }, { age: { $gt: 35 } } ] } |
$not | กลับค่าผลลัพธ์ของเงื่อนไข | { age: { $not: { $gte: 25 } } } |
$nor | รวมเงื่อนไขด้วย NOR | { $nor: [ { age: { $lt: 25 } }, { city: "Los Angeles" } ] } |
3. ตัวดำเนินการสำหรับองค์ประกอบ (Element Operators)
ใช้เพื่อสืบค้นเอกสารตามการมีอยู่ของฟิลด์
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
$exists | ตรงกับเอกสารที่มีฟิลด์นั้น | { age: { $exists: true } } |
$type | ตรงกับฟิลด์ที่มีประเภทข้อมูลที่กำหนด | { age: { $type: "number" } } |
4. ตัวดำเนินการสำหรับอาเรย์ (Array Operators)
ใช้ดำเนินการกับข้อมูลในอาเรย์
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
$all | ตรงกับอาเรย์ที่มีค่าทั้งหมดตามที่กำหนด | { tags: { $all: ["red", "blue"] } } |
$elemMatch | ตรงกับอาเรย์ที่มีองค์ประกอบตรงตามเงื่อนไข | { scores: { $elemMatch: { $gt: 90 } } } |
$size | ตรงกับอาเรย์ที่มีจำนวนองค์ประกอบเท่าที่กำหนด | { tags: { $size: 3 } } |
5. ตัวดำเนินการสำหรับการประเมินผล (Evaluation Operators)
ใช้ประเมินผลด้วยนิพจน์ สคริปต์ หรือเรกูลาร์เอกซ์เพรสชัน
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
$regex | ตรงกับข้อความที่ตรงกับเรกูลาร์เอกซ์เพรสชัน | { name: { $regex: /^J/ } } |
$expr | ใช้นิพจน์เชิงการรวมใน Query | { $expr: { $gt: [ "$spent", "$budget" ] } } |
$jsonSchema | ตรวจสอบเอกสารกับ JSON Schema | { $jsonSchema: { properties: { age: { type: "number" } } } } |
6. ตัวดำเนินการสำหรับข้อมูลเชิงภูมิศาสตร์ (Geospatial Query Operators)
สืบค้นเอกสารตามข้อมูลเชิงภูมิศาสตร์
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
$geoWithin | ตรงกับเอกสารที่อยู่ภายในรูปทรงเรขาคณิตที่กำหนด | { location: { $geoWithin: { $center: [ [ -73.97, 40.77 ], 10 ] } } } |
$near | ตรงกับเอกสารที่อยู่ใกล้กับจุดที่กำหนด | { location: { $near: { $geometry: { type: "Point", coordinates: [ -73.97, 40.77 ] } } } } |
$geoIntersects | ตรงกับเอกสารที่รูปทรงเรขาคณิตตัดกัน | { location: { $geoIntersects: { $geometry: { type: "Polygon", coordinates: [...] } } } } |
บทสรุป
การเข้าใจตัวดำเนินการ Query ใน MongoDB เป็นสิ่งสำคัญสำหรับการสืบค้นฐานข้อมูลได้อย่างมีประสิทธิภาพ การใช้ตัวดำเนินการเหล่านี้ช่วยให้คุณสร้าง Query ที่ทรงพลังและแม่นยำเพื่อดึงข้อมูล กรองข้อมูล และจัดการข้อมูลได้อย่างมีประสิทธิผล