آموزش مقدماتی پایگاه داده سندگرای مانگو

مانگو  محمدامین ساجدی
Facebooktwittergoogle_pluspinterestlinkedinmail
Print Friendly, PDF & Email

پرس و جوهای AND با چندین عبارت جهت بررسی بر روی یک فیلد

به مثال زیر توجه کنید:

db.inventory.find( { $and: [ { price: { $ne: 1.99 } }, { price: { $exists: true } } ] } )

این پرس و جو داکیومنت هایی را انتخاب می کند که شامل موارد زیر باشند:

  • فیلد price دارای مقداری نابرابر با 99 دارد
  • فیلد price وجود دارد

چون پرس و جوی بالا بر روی یک فیلد عمل می کند می توانیم بصورت یک عبارت بصورت زیر نیز نوشت.

db.inventory.find( { price: { $ne: 1.99, $exists: true } } )

پرس و جوهای AND با چندین عبارت بر روی یک عملگر

به مثال زیر توجه کنید:

db.inventory.find( {

    $and : [

        { $or : [ { price : 0.99 }, { price : 1.99 } ] },

        { $or : [ { sale : true }, { qty : { $lt : 20 } } ] }

    ]

} )

این پرس و جو داکیومنت هایی را انتخاب می کند که شامل موارد زیر باشند:

  • فیلد price دارای مقداری برابر با 99 یا 1.99 داشته باشد و
  • مقدار فیلد sale برابر true باشد یا اینکه مقدار فیلد qty کمتر از 20 باشد.

عملگر $nor :

عملگر $nor یک عملیات منطقی NOR را بر روی یک آرایه با یک یا بیش از یک عبارت انجام می دهد و داکیومنت هایی را انتخاب می کند که تمامی عبارات درون آرایه پرس و جو را fail می شوند.  نحو این عملگر به صورت زیر می باشد:

{ $nor: [ { <expression1> }, { <expression2> }, …  { <expressionN> } ] }

پرس و جوی $nor با دو عبارت

به عبارت زیر که تنها از عملگر $nor استفاده می کند توجه کنید:

db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ]  } )

پرس و جوی بالا داکیومنت هایی را انتخاب می کند که شامل موارد زیر می باشند:

  • داکیومنت هایی که شامل فیلد price با مقدار نا برابر با 99 و شامل فیلد sale با مقدار نا برابر با true یا
  • شامل فیلد price با مقدار نا برابر با 99 باشد و فیللد sale را اصلا نداشته باشد یا
  • شامل فیلد price نباشد اما شامل فیلد sale با مقدار نا برابر با true یا
  • شامل فیلد price نباشد و فیلدی به نام sale هم نداشته باشد.

عملگر $nor و مقایسه های دیگر

به پرس و جوی زیر توجه کنید:

db.inventory.find( { $nor: [ { price: 1.99 }, { qty: { $lt: 20 } }, { sale: true } ] } )

پرس و جوی بالا داکیومنت هایی را از مجموعه inventory انتخاب می کند که شامل موارد زیر می باشند:

  • مقدار فیلد price نابرابر با 99 باشد و
  • مقدار فیلد qty کمتر از 20 نباشد و
  • مقدار فیلد sale برابر با true نباشد.

همچنین شامل آن دسته داکیومنت هایی که این فیلدها را اصلا ندارند نیز می شود.

عملگر $nor و $exists:

پرس و جوی قبلی را با پرس و جوی زیر که از عملگر $nor به همراه عملگر $exists می باشد مقایسه نمایید:

db.inventory.find( { $nor: [ { price: 1.99 }, { price: { $exists: false } },                           { sale: true }, { sale: { $exists: false } } ] } )

این پرس و جو تمامی داکیومنت هایی را انتخاب می کند که:

  • شامل فیلد price با مقدار نابرابر با 99 و شامل فیلد sale با مقدار نابرابر با true باشند.

بدون دیدگاه

ارسال دیدگاه

اجرا شده توسط: همیار وردپرس