พื้นฐานการเขียน 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 จะช่วยเพิ่มความสะดวกและประสิทธิภาพในการสืบค้นข้อมูลได้อย่างมาก