با عرض سلام و وقت بخیر خدمت برنامه نویسان سایت پی وی لرن، در خدمت شما هستیم با جلسه دیگری از آموزش پایگاه داده MongoDB با عنوان پرس و جو سند در MongoDB.برای استفاده از query از متد ()find استفاده خواهیم کرد.همچنین عملیات پایه مانند AND در MongoDB و or نیز همراه با مثال توضیح داده خواهد شد.
استفاده از متد ()find :
برای پرس و جو داده ها از مجموعه MongoDB، شما باید از متد () find در MongoDB استفاده کنید.
سینتکس اصلی متد ()find به شرح زیر است:
1 | >db.COLLECTION_NAME.find() |
برای نمایش نتایج در قالب فرمت شده، شما می توانید از متد ()pretty با سینتکس زیر استفاده کنید :
1 | >db.mycol.find().pretty() |
مثال
1 2 3 4 5 6 7 8 9 10 11 | >db.mycol.find().pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "tutorials point", "url": "http://www.tutorialspoint.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } > |
برای کوئری سند بر اساس برخی شرایط، می توانید از عملیات زیر استفاده کنید.
معادل RDBMS | مثال | سینتکس | عملیات |
where by = ‘tutorials point’ | ()db.mycol.find({“by”:”tutorials point”}).pretty | {<key>:<value>} | مساوی |
where likes < 50 | ()db.mycol.find({“likes”:{$lt:50}}).pretty | {<key>:{$lt:<value>}} | کمتر |
where likes <= 50 | ()db.mycol.find({“likes”:{$lte:50}}).pretty | {<key>:{$lte:<value>}} | کمتر-مساوی |
where likes > 50 | ()db.mycol.find({“likes”:{$gt:50}}).pretty | {<key>:{$gt:<value>}} | بزرگتر |
where likes >= 50 | ()db.mycol.find({“likes”:{$gte:50}}).pretty | {<key>:{$gte:<value>}} | بزرگتر-مساوی |
where likes != 50 | ()db.mycol.find({“likes”:{$ne:50}}).pretty | {<key>:{$ne:<value>}} | نامساوی |
در متد () find اگر کلید های چندگانه را توسط علامت ‘,’ از هم جدا کنید، در MongoDB مشابه عملگر AND عمل میکند.
1 2 3 4 5 6 7 | >db.mycol.find( { $and: [ {key1: value1}, {key2:value2} ] } ).pretty() |
برای کوئری مدارک بر اساس شرایط OR، شما باید از کلمه کلیدی OR$ استفاده کنید.در مثال زیر سینتکس OR نشان داده شده است :
1 2 3 4 5 6 7 | >db.mycol.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty() |
مثال
مثال زیر همه آموزش هایی که توسط ‘tutorials point’ نوشته شده یا عنوان آن ‘MongoDB Overview’ را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 | >db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "tutorials point", "url": "http://www.tutorialspoint.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } > |
مثال زیر اسنادی را به ما نشان می دهد که مقدار likes بالاتر از ۱۰ است و عنوان آنها ‘MongoDB Overview’ یا ‘tutorials point’ می باشد.
‘where likes>10 AND (by = ‘tutorials point’ OR title = ‘MongoDB Overview’)’سینتکس در SQL
1 2 3 4 5 6 7 8 9 10 11 12 | >db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"}, {"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "tutorials point", "url": "http://www.tutorialspoint.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } > |
توجه داشته باشید متد ()find تمام اسناد را به صورت غیر ساختاری نمایش می دهد و برای نمایش نتایج در قالب فرمت شده، شما باید از متد ()pretty استفاده نمایید.
مسلم
دم شما گرم. عالی بود