Skip to main content

ตัวดำเนินการ 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 ที่ทรงพลังและแม่นยำเพื่อดึงข้อมูล กรองข้อมูล และจัดการข้อมูลได้อย่างมีประสิทธิผล