فصل 3: MongoDB - پرس و جوی شرطی
در این فصل، پرس و جوی شرطی MongoDB معرفی میشود که مشابه عملگرهای مقایسهای مانند برابر، بزرگتر از و کوچکتر از در دستورات SQL است.
عملگرهای شرطی پشتیبانی شده توسط MongoDB
عملگر | توضیحات |
---|---|
$eq | برابر، مشابه عملگر = در SQL |
$gt | بزرگتر از، مشابه عملگر > در SQL |
$gte | بزرگتر مساوی، مشابه عملگر >= در SQL |
$in | مطابق با یک آرایه، هر یک از مقادیر، مشابه کوئری in در SQL |
$lt | کوچکتر از، مشابه عملگر < در SQL |
$nin | هیچ یک از مقادیر آرایه مطابقت ندارد، مشابه عملگر not in در SQL |
دادههای آزمایشی
دادههای مجموعه inventory به شکل زیر است
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] }
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] }
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
$eq (مطابقت برابر)
db.inventory.find( { qty: { $eq: 20 } } )
db.inventory.find( { "item.name": { $eq: "ab" } } )
// کوتاه شده، میتوان عملگر $eq را نادیده گرفت، qty = 20
db.inventory.find( { qty: 20 } )
معادل SQL:
select * from inventory where qty = 20
// این فقط یک مثال است، SQL فرمت فیلدهای تو در تو مانند item.name را پشتیبانی نمیکند
select * from inventory where item.name = 20
$gt (بزرگتر از)
db.inventory.find( { qty: { $gt: 20 } } )
معادل SQL:
select * from inventory where qty > 20
$gte (بزرگتر مساوی)
db.inventory.find( { qty: { $gte: 20 } } )
معادل SQL:
select * from inventory where qty >= 20
$in
مطابق با یک مقدار در آرایه
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
معادل SQL:
select * from inventory where qty in (5, 15)
$nin
مخالف عملگر $in
db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
معادل SQL:
select * from inventory where qty not in (5, 15)
$lt (کوچکتر از)
db.inventory.find( { qty: { $lt: 20 } } )
معادل SQL:
select * from inventory where qty < 20