با عرض سلام خدمت کاربران محترم سایت پی وی لرن. با یکی دیگر از جلسات دوره کامل آموزش Node.js در خدمت شما هستیم. در جلسه قبل به آموزش درج اطلاعات در MongoDB با Node.js پرداختیم. در این جلسه قصد داریم به آموزش دریافت اطلاعات از MongoDB با Node.js بپردازیم.
از تابع ()findOne برای انتخاب یا دریافت اطلاعات از پایگاه داده MongoDB استفاده می کنیم.
توابع find و findOne معادل دستور SELECT در پایگاه داده MySQL است.
این تابع اولین نتیجه پیدا شده را برگشت میدهد.
اولین پارامتر این تابع یک شی کوئری است. اگر یک شی خالی را به عنوان پارامتر ارسال کنیم، تمام document های Collection را انتخاب میکند. (اما اولین document را برگشت میدهد)
در مثال زیر اولین document کالکشن customers را انتخاب می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 | var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("mydb"); dbo.collection("customers").findOne({}, function(err, result) { if (err) throw err; console.log(result.name); db.close(); }); }); |
کد بالا را در فایلی به نام demo_mongodb_findone.js ذخیره و اجرا کنید:
C:\Users\Your Name>node demo_mongodb_findone.js |
خروجی:
Company Inc. |
همچنین می توانیم از تابع ()find نیز برای دریافت اطلاعات استفاده کنیم.
این تابع تمام اطلاعات انتخابی را برگشت می دهد.
اولین پارامتر این تابع یک شی کوئری است که همانطور که گفتیم اگر این شی خالی باشد، تمام document های کالکشن را انتخاب میکند. ( معادل دستور * SELECT در MySQL )
در مثال زیر تمام document های کالکشن cusromers را انتخاب می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 | var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("mydb"); dbo.collection("customers").find({}).toArray(function(err, result) { if (err) throw err; console.log(result); db.close(); }); }); |
کد بالا را در فایلی به نام demo_mongodb_find.js ذخیره و اجرا کنید:
C:\Users\Your Name>node demo_mongodb_find.js |
خروجی:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [ { _id: 58fdbf5c0ef8a50b4cdd9a84 , name: 'John', address: 'Highway 71'}, { _id: 58fdbf5c0ef8a50b4cdd9a85 , name: 'Peter', address: 'Lowstreet 4'}, { _id: 58fdbf5c0ef8a50b4cdd9a86 , name: 'Amy', address: 'Apple st 652'}, { _id: 58fdbf5c0ef8a50b4cdd9a87 , name: 'Hannah', address: 'Mountain 21'}, { _id: 58fdbf5c0ef8a50b4cdd9a88 , name: 'Michael', address: 'Valley 345'}, { _id: 58fdbf5c0ef8a50b4cdd9a89 , name: 'Sandy', address: 'Ocean blvd 2'}, { _id: 58fdbf5c0ef8a50b4cdd9a8a , name: 'Betty', address: 'Green Grass 1'}, { _id: 58fdbf5c0ef8a50b4cdd9a8b , name: 'Richard', address: 'Sky st 331'}, { _id: 58fdbf5c0ef8a50b4cdd9a8c , name: 'Susan', address: 'One way 98'}, { _id: 58fdbf5c0ef8a50b4cdd9a8d , name: 'Vicky', address: 'Yellow Garden 2'}, { _id: 58fdbf5c0ef8a50b4cdd9a8e , name: 'Ben', address: 'Park Lane 38'}, { _id: 58fdbf5c0ef8a50b4cdd9a8f , name: 'William', address: 'Central st 954'}, { _id: 58fdbf5c0ef8a50b4cdd9a90 , name: 'Chuck', address: 'Main Road 989'}, { _id: 58fdbf5c0ef8a50b4cdd9a91 , name: 'Viola', address: 'Sideway 1633'} ] |
دومین پارامتر تابع ()find یک شی است که مشخص می کند کدام فیلد ها یا ستون ها در نتایج قرار بگیرند.
این پارامتر اختیاری است و اگر استفاده نشود، تمام فیلد ها در نتایج قرار می گیرند.
در مثال زیر فقط فیلد های name و address تمام document های کالکشن customers را انتخاب می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 | var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("mydb"); dbo.collection("customers").find({}, { _id: 0, name: 1, address: 1 }).toArray(function(err, result) { if (err) throw err; console.log(result); db.close(); }); }); |
کد بالا را در فایلی به نام demo_mongodb_find_fields.js ذخیره و اجرا کنید:
C:\Users\Your Name>node demo_mongodb_find_fields.js |
خروجی:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [ { name: 'John', address: 'Highway 71'}, { name: 'Peter', address: 'Lowstreet 4'}, { name: 'Amy', address: 'Apple st 652'}, { name: 'Hannah', address: 'Mountain 21'}, { name: 'Michael', address: 'Valley 345'}, { name: 'Sandy', address: 'Ocean blvd 2'}, { name: 'Betty', address: 'Green Grass 1'}, { name: 'Richard', address: 'Sky st 331'}, { name: 'Susan', address: 'One way 98'}, { name: 'Vicky', address: 'Yellow Garden 2'}, { name: 'Ben', address: 'Park Lane 38'}, { name: 'William', address: 'Central st 954'}, { name: 'Chuck', address: 'Main Road 989'}, { name: 'Viola', address: 'Sideway 1633'} ] |
در شی مشخص کننده فیلدها، شما نمی توانید دو فیلد با مقدار های ۰ , ۱ داشته باشید. (به جز فیلد id_ )
مثال زیر اشتباه است و با اجرای آن یک خطا دریافت می کنید:
1 2 3 4 5 6 7 8 9 10 11 12 | var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("mydb"); dbo.collection("customers").find({}, { name: 1, address: 0 }).toArray(function(err, result) { if (err) throw err; console.log(result); db.close(); }); }); |
جلسه آموزش دریافت اطلاعات از MongoDB با Node.js نیز به پایان رسید.
در جلسه بعدی به آموزش فیلتر نتایج MongoDB با Node.js خواهیم پرداخت. با ما همراه باشید.