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

Facebooktwittergoogle_pluspinterestlinkedinmail
Print Friendly, PDF & Email

همونطور که توی کد زیر می بینید نتیجه کرسری که یک کوئری به ما برمی گردونه رو به یک متغیر نسبت دادیم.

var c = db.testData.find()

حالا می خوایم با یک حلقه while تک تک داکیومنت های اون رو نمایش بدیم.

while ( c.hasNext() ) printjson( c.next() )

تابع hasNext()درصورتیکه داکیومنت دیگه ای وجود داشته باشه مقدار true رو برمی گردونه. تابع next() هم داکیومنت بعدی رو برمی گردونه.  پس از وارد کردن کدهای بالا نتیجه json به شما بصورت زیر نشون داده میشه.

{ “_id” : ObjectId(“51a7dc7b2cacf40b79990be6”), “x” : 1 }{ “_id” : ObjectId(“51a7dc7b2cacf40b79990be7”), “x” : 2 }{ “_id” : ObjectId(“51a7dc7b2cacf40b79990be8”), “x” : 3 }…

استفاده از عملگرهای آرایه ای در کار با کرسرها

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

var c = db.testData.find()

حالا می خوایم بعنوان مثال چهارمین عنصر موجود توی این آرایه کرسری رو نمایش بدیم. فقط کافیه که بنویسیم:

printjson( c [ 4 ] )

و مانگو هم در پاسخ به این درخواست خروجی مثل زیر نمایش میده.

{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bea”), “x” : 5 }

وقتی که با یک کرسر بصورت آرایه برخورد می کنید ابتدا مانگو تابع cursur.toArray() را فراخوانی می کند و سپس داکیومنت های آنرا درون RAM نگهداری می کند. پس از ان شاخص ها به داکیومنت های درون آرایه اعمال می شوند. توجه داشته باشید که در مجموعه های بسیار بزرگ ممکن است RAM کم بیاورد.

کوئری برای یک داکیومنت خاص:

مانگو دارای یک سیستم کوئری بسیار قوی هست که به شما امکان ایجاد کوئری هایی برای دسته بندی مقادیر و فیلدها رو میده.  در این قسمت بدنبال دستیابی به یک داکیومنت خاص درون مجموعه هستیم که فیلد و مقدار مورد نظر رو از طریق پارامتر درون تابع find() مشخص می کنیم. درواقع این پارامتر اون فیلدی هست که توی مجموعه باید با پارامتر یکی باشه تا داکیومنتش بصورت کرسر برگشت داده بشه.

درمثال زیر بدنبال داکیومنتی هستیم که  شامل { x :18}  میشه.

db.testData.find( { x : 18 } )

مانگو با جستجو درون مجموعه موردنظر ما یعنی testData بدنبال داکیومنتی یا داکیومنت هایی می گرده که دارای مقداری برابر با { x :18}  دارند کوئری مارو اجرا می کنه و نتیجه ای مثل زیر برمی گردونه.

{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bf7”), “x” : 18 }

برگرداندن یک داکیومنت:

با استفادهاز متد findOne() قادر خواهید بود یک داکیومنت رو از محموعه خود بیرون بکشید. فرق این متد با find() در این هست که نوع خروجی اون از نوع داکیومنت هست و نه کرسر. نحوه عملکرد این دو تابع مشابه هم می باشد.

db.testData.findOne()

شما احتمالا این مطالب را نیز دوست دارید...

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *