บทนี้จะแนะนำเรื่องรูปแบบพื้นฐานในการคิวรี่ของ MongoDB ผ่าน mongo shell ใน mongo shell ใช้วิธี db.collection.find()
เพื่อคิวรี่ข้อมูล
เตรียมข้อมูลทดสอบ
แทรกรายการข้อมูลลงในคอลเลคชัน inventory
db.inventory.insertMany([
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
คิวรี่ทั้งหมด
คิวรี่ทั้งหมดในคอลเลคชัน inventory, {} แทนเงื่อนไขคิวรี่เปล่า
db.inventory.find( {} )
เหมือนกับคำสั่ง SQL ต่อไปนี้:
SELECT * FROM inventory
เงื่อนไขคิวรี่ทางเสมพันธ์
รูปแบบ:
{ ฟิลด์: ค่า, ... }
ตัวอย่าง 1:
db.inventory.find( { status: "D" } )
เหมือนกับคำสั่ง SQL ต่อไปนี้:
SELECT * FROM inventory WHERE status = "D"
ตัวอย่าง 2: คิวรี่ฟิลด์ที่ซ้อนกัน, ใช้จุด (.) เพื่อเชื่อมต่อฟิลด์ของเอกสารที่ซ้อนกัน
db.inventory.find( { "size.uom": "in" } )
เหมือนกับคำสั่ง SQL ต่อไปนี้:
SELECT * FROM inventory WHERE size.uom = "in"
หมายเหตุ: เอกสาร MongoDB ถูกเก็บในรูปแบบ JSON ดังนั้นสนับสนุนการใช้ฟิลด์ที่ซ้อนกันเป็นเงื่อนไขคิวรี่
ใช้ตัวดำเนินการคิวรี่
MongoDB สนับสนุนตัวดำเนินการคิวรีหลากหลายเพื่อดำเนินการคิวรีที่ซับซ้อน รูปแบบ:
{ <ฟิลด์1>: { <ตัวดำเนินการ1>: <ค่า1> }, ... }
คำอธิบาย:
- ฟิลด์1: ชื่อฟิลด์
- ตัวดำเนินการ1: ตัวดำเนินการ
- ค่า1: พารามิเตอร์ของตัวดำเนินการ
ตัวอย่างของตัวดำเนินการ $in:
db.inventory.find( { status: { $in: [ "A", "D" ] } } )
เหมือนกับคำสั่ง SQL คิวรี่ด้วยตัวดำเนินการ "in" ต่อไปนี้:
SELECT * FROM inventory WHERE status in ("A", "D")
หมายเหตุ: สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับตัวดำเนินการโปรดอ้างถึงส่วนรายละเอียดของคิวรี MongoDB ในบทต่อไป
เงื่อนไข and
เหมือนกับ SQL, MongoDB ยังสนับสนุนเงื่อนไข and
ตัวอย่าง:
// ป้อนเงื่อนไขหลายตัวติดต่อกัน และเชื่อมต่อเงื่อนไขโดยใช้ and
db.inventory.find( { status: "A", item: "postcard"} )
เหมือนกับคำสั่ง SQL ต่อไปนี้:
SELECT * FROM inventory WHERE status = "A" AND item = "postcard"
เงื่อนไข or
เหมือนกับ SQL, MongoDB ยังสนับสนุนเงื่อนไข or ซึ่งถูกนำมาใช้ผ่านตัวดำเนินการ $or
รูปแบบ:
{
$or: [
{เงื่อนไข1},
{เงื่อนไข2},
.....
]
}
ตัวอย่าง:
db.inventory.find( { $or: [ { status: "A" }, { item: "postcard"} ] } )
เหมือนกับคำสั่ง SQL ต่อไปนี้:
SELECT * FROM inventory WHERE status = "A" OR item = "postcard"
การรวมเงื่อนไข and และ or
เหมือนกับ SQL, MongoDB สามารถรวมเงื่อนไขคิวรี่ที่ซับซ้อนโดยใช้ and และ or
ตัวอย่าง:
db.inventory.find( {
status: "A",
$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )
ที่นี่ใช้ตัวดำเนินการ $lt เพื่อน้อยกว่าและการจับคู่อย่างมีความเหมาะสม
นี่คล้ายกับคำสั่ง SQL ต่อไปนี้:
SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 or item like 'p%')
คำแนะนำ: สำหรับคำอธิบายเพิ่มเติมของเงื่อนไขคิวรี่ของ MongoDB โปรดอ้างถึงบทต่อไป