این فصل با استفاده از پوستهٔ‌مانگو وارد فراخوانی پایهٔ سینتکس پرس و جوی مانگو دی‌بی می‌شود. در پوستهٔ‌مانگو، از متد db.collection.find() برای جستجوی داده‌ها استفاده می‌شود.

آماده سازی داده‌های آزمایشی

وارد کردن چند داده به مجموعهٔ انبار.

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" }
]);

جستجوی تمام سند‌ها

جستجوی تمام سندها در مجموعهٔ انبار، {} نمایانگر یک شرط جستجو خالی است.

db.inventory.find( {} )

مشابه عبارت SQL زیر است:

SELECT * FROM inventory

شرایط جستجوی برابری

سینتکس:

{ field: value, ... }

مثال ۱:

db.inventory.find( { status: "D" } )

مشابه عبارت SQL زیر است:

SELECT * FROM inventory WHERE status = "D"

مثال ۲: جستجوی فیلد تو درونی، از نقطه (.) برای اتصال فیلدهای متقابل سند‌های درونی استفاده می‌شود.

db.inventory.find( { "size.uom": "in" } )

مشابه عبارت SQL زیر است:

SELECT * FROM inventory WHERE size.uom = "in"

توجه: اسناد مانگو دی‌بی به صورت JSON ذخیره می‌شوند، بنابراین از فیلدهای درونی برای شرایط جستجوی استفاده می‌کنند.

استفاده از عملگرهای جستجو

مانگو دی‌بی از انواع مختلفی از عملگرهای جستجو برای انجام جستجوی پیچیده پشتیبانی می‌کند. سینتکس:

{ <field1>: { <operator1>: <value1> }, ... }

توضیح:

  • field1: نام فیلد
  • operator1: عملگر
  • value1: پارامتر عملگر

مثال عملگر $in:

db.inventory.find( { status: { $in: [ "A", "D" ] } } )

مشابه عبارت SQL جستجوی "in" است:

SELECT * FROM inventory WHERE status in ("A", "D")

توجه: برای جزییات عملگرها، لطفاً به قسمت جزئیات پرس‌وجوی مانگو دی‌بی مراجعه کنید.

شرط and

مانند SQL، مانگو دی‌بی همچنین شرط and را پشتیبانی می‌کند.

مثال:

// وارد کردن چندین شرط پشت سرهم و اتصال شرایط با and
db.inventory.find( { status: "A", item: "postcard"} )

مشابه عبارت SQL زیر است:

SELECT * FROM inventory WHERE status = "A" AND item = "postcard"

شرط or

مانند SQL، مانگو دی‌بی همچنین شرط or را پشتیبانی می‌کند، که از طریق عملگر $or اجرا می‌شود.

سینتکس:

{
	$or: [
		{condition1},
		{condition2},
		.....
	]
}

مثال:

db.inventory.find( { $or: [ { status: "A" }, { item: "postcard"} ] } )

مشابه عبارت SQL زیر است:

SELECT * FROM inventory WHERE status = "A" OR item = "postcard"

ترکیب شرط and و or

مانند SQL، مانگو دی‌بی می‌تواند شرایط پیچیدهٔ جستجو را با استفاده از شرط 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%')

نکته: برای توضیحات دقیقتر در مورد شرایط جستجوی مانگو دی‌بی، لطفاً به فصل‌های بعدی مراجعه کنید.