در این مقاله آشنایی با دستور find در مانگو دی بی از بخش آموزش مانگو دی بی و عملیات CRUD در مانگو دی بی پس از آموزش مقاله آشنایی با دستور findOne در مانگو دی بی می خواهیم نحوه استفاده از متد ()find در مانگو دی بی را به جهت بازگردانی و نمایش اطلاعات چندین سند Documents از کالکشن Collection یاد خواهید گرفت.
متد ()find در مانگو دی بی چه کاربردی دارد؟
شما با استفاده از متد ()find در مانگو دی بی می توانید اطلاعات چندین سند Documents از کالکشن Collection بازگردانی و نمایش دهید.
معرفی متد ()find در مانگو دی بی
متد ()find در مانگو دی بی به شما کمک می کند چندین سند Documents (یک یا چند سند) با یک ویژگی مشخص و شرایط را از کالکشن Collection برگردانده و به شما (در خروجی) نمایش دهد.
دستور زیر ساختار متد ()find می باشد:
db.collection.find(query, projection)
این متد خیلی شبیه متد ()findOne می باشد به این دلیل که این متد هم دارای دو پارامتر (آرگومان) اختیاری به عنوان ورودی متد می پذیرد.
1) query
پارامتر query
مشخص می کند که در کالکشن Collection چه سند هایی را می خواهید واکشی و نمایش دهید که معیار انتخاب سند هم ستون های {}
در اسناد می باشد.
اگر در متد پارامتر query
را حذف کنید این متد تمام سندهایی که در کالکشن Collection مدنظر می باشد را بازگردانی و نمایش می دهد.
2) projection
پارامتر projection
مشخص می کند در Documents سندهای انتخاب شده شما می خواهید چه فیلدها و ستون هایی را بازگردانی و نمایش دهید.
اگر در متد ()find پارامتر projection
را مشخص نکنید و حذف کنید. متد ()find تمام فیلدها و ستونهای اسناد مشخص شده بازگردانی و نمایش می دهد.
به صورت پیش فرض متد ()find زمانی که اسناد انتخاب شده را نمایش می دهد، مقدار ستون id_ را هم نمایش می دهد مگر در این که شما در پارامتر projection
مقدار id: false_ را مشخص کرده باشید که در خروجی اسناد مقدار فیلد id_ را نمایش نخواهد داد.
زمانی که با استفاده از ابزار mongo shell متد ()find را به صورت خودکار و بدون مشخص کردن و درج پارامترهای ورودی اجرا کنید Documents اسنادهای در Collection کالکشن خروجی گرفته و به عنوان کرسر برمی گرداند و در این حالت نیازی به انجام مراحل اضافه نیست.
به صورت پیشفرض، پوسته mongo shell با اجرای متد ()find بیست سند اول Collection کالکشن را خروجی گرفته و نمایش می دهد و برای نمایش ادامه اسناد بایستی دستور it
را در command وارد کنید.
مثال هایی از متد ()find در مانگو دی بی
با استفاده متد ()find تعدادی اسناد به کالکشن books
درج و اضافه می کنیم.
db.books.insertMany([
{ "_id" : 1, "title" : "Unlocking Android", "isbn" : "1933988673", "categories" : [ "Open Source", "Mobile" ] },
{ "_id" : 2, "title" : "Android in Action, Second Edition", "isbn" : "1935182722", "categories" : [ "Java" ] },
{ "_id" : 3, "title" : "Specification by Example", "isbn" : "1617290084", "categories" : [ "Software Engineering" ] },
{ "_id" : 4, "title" : "Flex 3 in Action", "isbn" : "1933988746", "categories" : [ "Internet" ] },
{ "_id" : 5, "title" : "Flex 4 in Action", "isbn" : "1935182420", "categories" : [ "Internet" ] },
{ "_id" : 6, "title" : "Collective Intelligence in Action", "isbn" : "1933988312", "categories" : [ "Internet" ] },
{ "_id" : 7, "title" : "Zend Framework in Action", "isbn" : "1933988320", "categories" : [ "Web Development" ] },
{ "_id" : 8, "title" : "Flex on Java", "isbn" : "1933988797", "categories" : [ "Internet" ] },
{ "_id" : 9, "title" : "Griffon in Action", "isbn" : "1935182234", "categories" : [ "Java" ] },
{ "_id" : 10, "title" : "OSGi in Depth", "isbn" : "193518217X", "categories" : [ "Java" ] },
{ "_id" : 11, "title" : "Flexible Rails", "isbn" : "1933988509", "categories" : [ "Web Development" ] },
{ "_id" : 13, "title" : "Hello! Flex 4", "isbn" : "1933988762", "categories" : [ "Internet" ] },
{ "_id" : 14, "title" : "Coffeehouse", "isbn" : "1884777384", "categories" : [ "Miscellaneous" ] },
{ "_id" : 15, "title" : "Team Foundation Server 2008 in Action", "isbn" : "1933988592", "categories" : [ "Microsoft .NET" ] },
{ "_id" : 16, "title" : "Brownfield Application Development in .NET", "isbn" : "1933988711", "categories" : [ "Microsoft" ] },
{ "_id" : 17, "title" : "MongoDB in Action", "isbn" : "1935182870", "categories" : [ "Next Generation Databases" ] },
{ "_id" : 18, "title" : "Distributed Application Development with PowerBuilder 6.0", "isbn" : "1884777686", "categories" : [ "PowerBuilder" ] },
{ "_id" : 19, "title" : "Jaguar Development with PowerBuilder 7", "isbn" : "1884777864", "categories" : [ "PowerBuilder", "Client-Server" ] },
{ "_id" : 20, "title" : "Taming Jaguar", "isbn" : "1884777686", "categories" : [ "PowerBuilder" ] },
{ "_id" : 21, "title" : "3D User Interfaces with Java 3D", "isbn" : "1884777902", "categories" : [ "Java", "Computer Graphics" ] },
{ "_id" : 22, "title" : "Hibernate in Action", "isbn" : "193239415X", "categories" : [ "Java" ] },
{ "_id" : 23, "title" : "Hibernate in Action (Chinese Edition)", "categories" : [ "Java" ] },
{ "_id" : 24, "title" : "Java Persistence with Hibernate", "isbn" : "1932394885", "categories" : [ "Java" ] },
{ "_id" : 25, "title" : "JSTL in Action", "isbn" : "1930110529", "categories" : [ "Internet" ] },
{ "_id" : 26, "title" : "iBATIS in Action", "isbn" : "1932394826", "categories" : [ "Web Development" ] },
{ "_id" : 27, "title" : "Designing Hard Software", "isbn" : "133046192", "categories" : [ "Object-Oriented Programming", "S" ] },
{ "_id" : 28, "title" : "Hibernate Search in Action", "isbn" : "1933988649", "categories" : [ "Java" ] },
{ "_id" : 29, "title" : "jQuery in Action", "isbn" : "1933988355", "categories" : [ "Web Development" ] },
{ "_id" : 30, "title" : "jQuery in Action, Second Edition", "isbn" : "1935182323", "categories" : [ "Java" ] }
]);
1) استفاده از متد ()find در مانگو دی بی برای بازگردانی تمامی اسناد از کالکشن
در مثال زیر می خواهیم با استفاده از متد ()find بدون مشخص کردن و درج هیچ پارامتری تمامی Documents اسنادی که در Collection کالکشن می باشد را واکشی و نمایش دهیم:
db.books.find()
در پوسته mongo shell اگر دستور بالا را اجرا کنید در خروجی تنها 20 سند اول در Collection کالکشن را نمایش می دهد و برای نمایش مابقی اسناد دستور it
را وارد کنید.
2) استفاده از متد ()find در مانگو دی بی برای خروجی و نمایش سندی مشخص شده.
ما در مثال زیر با استفاده از متد ()find اطلاعات Document سندی را واکشی و نمایش میدهیم که id = 10 می باشد:
db.books.find({_id: 10})
در دستور متد بالا پارامتر اول متد که مشخص کننده چه سندی یا اسنادی را می خواهید واکشی و نمایش دهید را مشخص می کند اما پارامتر projection
مشخص نشده که نشان می دهد شما می خواهید تمامی ستون و فیلدهای Document سند را می خواهید در خروجی نمایش دهید.
[
{
_id: 10,
title: 'OSGi in Depth',
isbn: '193518217X',
categories: [ 'Java' ]
}
]
3) استفاده از متد ()find در مانگو دی بی برای نمایش سندی با مشخص کردن ستون و فیلدها.
می خواهید Documents اسنادی را به شما در خروجی نمایش دهد و بازگرداند که فقط سه فیلد و ستون با مقادیر درخواستی انطباق داشته باشد.
db.books.find({ categories: 'Java'}, { title: 1,isbn: 1})
خروجی دستور بالا به شکل زیر نمایش داده می شود.
[
{
_id: 2,
title: 'Android in Action, Second Edition',
isbn: '1935182722'
},
{ _id: 9, title: 'Griffon in Action', isbn: '1935182234' },
{ _id: 10, title: 'OSGi in Depth', isbn: '193518217X' },
{
_id: 21,
title: '3D User Interfaces with Java 3D',
isbn: '1884777902'
},
{ _id: 22, title: 'Hibernate in Action', isbn: '193239415X' },
{ _id: 23, title: 'Hibernate in Action (Chinese Edition)' },
{
_id: 24,
title: 'Java Persistence with Hibernate',
isbn: '1932394885'
},
{ _id: 28, title: 'Hibernate Search in Action', isbn: '1933988649' },
{
_id: 30,
title: 'jQuery in Action, Second Edition',
isbn: '1935182323'
}
]
در خروجی اگر بخواهید مقدار فیلد id_ را نمایش ندهید بایستی در متد در بخش پارامتر projection
مقدار id_ : 0 قرار دهید:
db.books.find({ categories: 'Java'}, { title: 1,isbn: 1,_id: 0})
خروجی دستور بالا به شکل زیر نمایش داده می شود.
[
{ title: 'Android in Action, Second Edition', isbn: '1935182722' },
{ title: 'Griffon in Action', isbn: '1935182234' },
{ title: 'OSGi in Depth', isbn: '193518217X' },
{ title: '3D User Interfaces with Java 3D', isbn: '1884777902' },
{ title: 'Hibernate in Action', isbn: '193239415X' },
{ title: 'Hibernate in Action (Chinese Edition)' },
{ title: 'Java Persistence with Hibernate', isbn: '1932394885' },
{ title: 'Hibernate Search in Action', isbn: '1933988649' },
{ title: 'jQuery in Action, Second Edition', isbn: '1935182323' }
]
توجه داشته باشید برای ساخت و خروجی Documents اسنادی با شرایط پیچیده تر با استفاده از عملگرها در آموزشهای بعدی کامل توضیح خواهیم داد
خلاصه
با استفاده از متد ()find می توانید Documents اسنادی از Collection کالکشن خروجی گرفته و نمایش دهید.
برای ادامه آموزش مانگو دی بی MongoDB می توانید مقاله آشنایی با دستور MongoDB Projection در مانگو دی بی را مطالعه کنید.