Skip to main content

พื้นฐานการเขียน Query ใน MongoDB (MongoDB Query Basics)

บทนำ

MongoDB มีรูปแบบการเขียน Query ที่ยืดหยุ่นและทรงพลัง ช่วยให้สามารถดึงข้อมูลจากคอลเลคชันได้อย่างมีประสิทธิภาพ Query ใน MongoDB เขียนในรูปแบบของเอกสาร JSON ทำให้ง่ายต่อการใช้งาน


การสืบค้นข้อมูลพื้นฐาน

1. ดึงข้อมูลทั้งหมดในคอลเลคชัน

ใช้คำสั่ง find() เพื่อดึงข้อมูลทั้งหมดในคอลเลคชัน

// ดึงข้อมูลทั้งหมดในคอลเลคชัน "users"
db.users.find();

2. ดึงข้อมูลด้วยเงื่อนไข

สามารถระบุเงื่อนไขเพื่อดึงข้อมูลที่ต้องการได้

// ดึงข้อมูลที่ฟิลด์ "name" เท่ากับ "John"
db.users.find({ name: "John" });

3. ดึงข้อมูลแบบเอกสารเดียว

ใช้คำสั่ง findOne() เพื่อดึงข้อมูลเอกสารแรกที่ตรงกับเงื่อนไข

// ดึงข้อมูลผู้ใช้ที่ "age" เท่ากับ 25
db.users.findOne({ age: 25 });

การใช้ตัวดำเนินการใน Query

1. ตัวดำเนินการเปรียบเทียบ

  • $eq: เท่ากับ
  • $ne: ไม่เท่ากับ
  • $gt: มากกว่า
  • $gte: มากกว่าหรือเท่ากับ
  • $lt: น้อยกว่า
  • $lte: น้อยกว่าหรือเท่ากับ

ตัวอย่าง:

// ดึงข้อมูลผู้ใช้ที่อายุมากกว่า 30
db.users.find({ age: { $gt: 30 } });

2. ตัวดำเนินการตรรกะ (Logical Operators)

  • $and: เงื่อนไขทั้งหมดต้องเป็นจริง
  • $or: เงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง
  • $not: ตรงข้ามกับเงื่อนไข
  • $nor: ไม่มีเงื่อนไขใดเป็นจริง

ตัวอย่าง:

// ดึงข้อมูลผู้ใช้ที่ "age" มากกว่า 25 และ "city" เป็น "Bangkok"
db.users.find({ $and: [ { age: { $gt: 25 } }, { city: "Bangkok" } ] });

// ดึงข้อมูลผู้ใช้ที่ "age" น้อยกว่า 20 หรือ "isActive" เป็น true
db.users.find({ $or: [ { age: { $lt: 20 } }, { isActive: true } ] });

การกำหนดผลลัพธ์ที่ต้องการ

1. กำหนดฟิลด์ที่ต้องการแสดง

ใช้พารามิเตอร์ที่สองใน find() เพื่อเลือกฟิลด์ที่ต้องการ

// ดึงข้อมูลชื่อและอายุของผู้ใช้ทั้งหมด
db.users.find({}, { name: 1, age: 1 });

2. จัดเรียงผลลัพธ์ (Sorting)

ใช้คำสั่ง sort() เพื่อจัดเรียงผลลัพธ์

  • 1 สำหรับเรียงจากน้อยไปมาก
  • -1 สำหรับเรียงจากมากไปน้อย

ตัวอย่าง:

// เรียงข้อมูลผู้ใช้ตาม "age" จากน้อยไปมาก
db.users.find().sort({ age: 1 });

3. จำกัดจำนวนผลลัพธ์ (Limit)

ใช้คำสั่ง limit() เพื่อจำกัดจำนวนเอกสารที่ดึงมา

// ดึงข้อมูลผู้ใช้ 5 คนแรก
db.users.find().limit(5);

4. ข้ามเอกสาร (Skip)

ใช้คำสั่ง skip() เพื่อข้ามเอกสารตามจำนวนที่กำหนด

// ข้ามผู้ใช้ 10 คนแรก แล้วดึงข้อมูลที่เหลือ
db.users.find().skip(10);

การสืบค้นในเอกสารย่อย (Embedded Documents)

ดึงข้อมูลจากเอกสารย่อย

// ดึงข้อมูลผู้ใช้ที่อยู่ใน "city" เป็น "Bangkok"
db.users.find({ "address.city": "Bangkok" });

การสืบค้นในอาเรย์ (Arrays)

ค้นหาค่าที่อยู่ในอาเรย์

// ดึงข้อมูลผู้ใช้ที่มี "tags" เป็น "developer"
db.users.find({ tags: "developer" });

การใช้ตัวดำเนินการกับอาเรย์

  • $all: ค่าทั้งหมดในเงื่อนไขต้องอยู่ในอาเรย์
  • $elemMatch: ใช้สำหรับค้นหาอาเรย์ที่ตรงกับเงื่อนไขหลายข้อ

ตัวอย่าง:

// ดึงข้อมูลผู้ใช้ที่ "tags" มีทั้ง "developer" และ "mongodb"
db.users.find({ tags: { $all: ["developer", "mongodb"] } });

// ดึงข้อมูลผู้ใช้ที่อาเรย์ "scores" มีค่ามากกว่า 80 และน้อยกว่า 100


db.users.find({
scores: { $elemMatch: { $gt: 80, $lt: 100 } }
});

บทสรุป

การเขียน Query ใน MongoDB เป็นพื้นฐานที่สำคัญสำหรับการทำงานกับฐานข้อมูล การทำความเข้าใจคำสั่งและตัวดำเนินการที่มีใน MongoDB จะช่วยเพิ่มความสะดวกและประสิทธิภาพในการสืบค้นข้อมูลได้อย่างมาก