مقدمه
عملگرهای پرس و جو در MongoDB شامل عملگرهای مقایسهای، منطقی، عنصری، ارزیابی، جغرافیایی، آرایهای، بیتی و کامنت هستند.
عملگرهای مقایسهای MongoDB
$eq
عملگر $eq شرایط برابری را مشخص میکند. این عملگر اسناد را تطابق میدهد که در آن مقدار یک فیلد برابر با مقدار مشخص شده باشد.
نحو:
{ : { $eq: } }
مثال:
db.books.find({ price: { $eq: 300 } })
در این مثال، پرس و جو به مجموعه کتابها میپردازد تا تمامی اسنادی که در آنها مقدار فیلد قیمت برابر با 300 باشد را انتخاب کند.
$gt
عملگر $gt اسنادی را انتخاب میکند که در آنها مقدار فیلد بیشتر از مقدار مشخص شده باشد.
نحو:
{ field: { $gt: value } }
مثال:
db.books.find({ price: { $gt: 200 } })
$gte
عملگر $gte اسنادی را انتخاب میکند که مقدار فیلد بیشتر از یا برابر با مقدار مشخص شده باشد.
نحو:
{ field: { $gte: value } }
مثال:
db.books.find({ price: { $gte: 250 } })
$in
عملگر $in اسنادی را انتخاب میکند که مقدار یک فیلد برابر با هر کدام از مقادیر موجود در آرایه مشخص شده باشد.
نحو:
{ field: { $in: [, , …] } }
مثال:
db.books.find({ price: { $in: [100, 200] } })
$lt
عملگر $lt اسنادی را انتخاب میکند که مقدار فیلد کمتر از مقدار مشخص شده باشد.
نحو:
{ field: { $lt: value } }
مثال:
db.books.find({ price: { $lt: 20 } })
$lte
عملگر $lte اسنادی را انتخاب میکند که مقدار فیلد کمتر از یا برابر با مقدار مشخص شده باشد.
نحو:
{ field: { $lte: value } }
مثال:
db.books.find({ price: { $lte: 250 } })
$ne
عملگر $ne اسنادی را انتخاب میکند که مقدار فیلد برابر با مقدار مشخص شده نباشد.
نحو:
{ : { $ne: } }
مثال:
db.books.find({ price: { $ne: 500 } })
$nin
عملگر $nin اسنادی را انتخاب میکند که مقدار فیلد در آرایه مشخص شده نباشد یا اصلاً وجود نداشته باشد.
نحو:
{ field: { $nin: [, , …] } }
مثال:
db.books.find({ price: { $nin: [50, 150, 200] } })
عملگرهای منطقی MongoDB
$and
عملگر $and به عنوان یک عملگر منطقی AND روی یک آرایه عمل میکند. این آرایه باید شامل یک یا چند عبارت باشد و اسنادی را انتخاب میکند که تمام عبارات موجود در آرایه را برآورده کنند.
نحو:
{ $and: [ { }, { }, ....] }
مثال:
db.books.find({ $and: [ { price: { $ne: 500 } }, { price: { $exists: true } } ] })
$not
عملگر $not به عنوان یک عملگر منطقی NOT روی عبارت مشخص شده عمل میکند و اسنادی را انتخاب میکند که با عبارت مربوطه تطابق نداشته باشند.
نحو:
{ field: { $not: { } } }
مثال:
db.books.find({ price: { $not: { $gt: 200 } } })
$nor
عملگر $nor به عنوان یک عملگر منطقی NOR روی یک آرایه از یک یا چند عبارت پرس و جو عمل میکند و اسنادی را انتخاب میکند که هیچ کدام از عبارات پرس و جو در آرایه را برآورده نکنند.
نحو:
{ $nor: [ { }, { }, ..... ] }
مثال:
db.books.find({ $nor: [ { price: 200 }, { sale: true } ] })
$or
<pعملگر $or به عنوان یک عملگر منطقی OR روی یک آرایه از دو یا چند عبارت عمل میکند و اسنادی را انتخاب میکند که حداقل یکی از عبارات را برآورده کنند.
نحو:
{ $or: [ { }, { }, ... , { } ] }
مثال:
db.books.find({ $or: [ { quantity: { $lt: 200 } }, { price: 500 } ] })
عملگرهای عنصری MongoDB
$exists
عملگر $exists اسنادی را انتخاب میکند که فیلد مشخص شده در آنها وجود داشته باشد زمانی که مقدار بولی برابر با true باشد. همچنین این عملگر اسنادی را انتخاب میکند که فیلد آنها مقدار null داشته باشد.
نحو:
{ field: { $exists: } }
مثال:
db.books.find({ qty: { $exists: true, $nin: [5, 15] } })
$type
عملگر $type اسنادی را انتخاب میکند که مقدار فیلد آنها از نوع BSON مشخص شده باشد.
نحو:
{ field: { $type: } }
مثال:
db.books.find({ "bookid": { $type: 2 } })
عملگرهای ارزیابی MongoDB
$expr
عملگر $expr اجازه میدهد که از عبارات تجمیعی در زبان پرس و جو استفاده شود.
نحو:
{ $expr: { } }
مثال:
db.store.find({ $expr: { $gt: [ "$product", "price" ] } })
$jsonSchema
این عملگر اسنادی را انتخاب میکند که با اسکیما JSON مشخص شده تطابق داشته باشند.
نحو:
{ $jsonSchema: }
$mod
عملگر $mod اسنادی را انتخاب میکند که مقدار فیلد آنها هنگام تقسیم بر مقسوم علیه، باقیمانده مشخص شده را داشته باشد.
نحو:
{ field: { $mod: [ divisor, remainder ] } }
مثال:
db.books.find({ qty: { $mod: [ 200, 0 ] } })
$regex
این عملگر قابلیتهای عبارت منظم برای تطابق الگوهای رشتهای در پرس و جوها را فراهم میکند. MongoDB از عبارات منظم سازگار با Perl استفاده میکند.
نحو:
{ : /pattern/ }
مثال:
db.books.find({ price: { $regex: /789$/ } })
$text
عملگر $text در محتوای فیلد، که با ایندکس متنی ایندکس شده باشد، جستجو میکند.
نحو:
{ $text: { $search: , $language: , $caseSensitive: , $diacriticSensitive: } }
مثال:
db.books.find({ $text: { $search: "Othelo" } })
$where
عملگر “where” برای ارسال یک رشته حاوی یک عبارت جاوااسکریپت یا یک تابع جاوااسکریپت کامل به سیستم پرس و جو استفاده میشود.
مثال:
db.books.find({ $where: function() { return (hex_md5(this.name) == "9b53e667f30cd329dca1ec9e6a8") } })