บทนี้จะแนะนำเรื่องรูปแบบพื้นฐานในการคิวรี่ของ 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 โปรดอ้างถึงบทต่อไป