با عرض سلام خدمت کاربران محترم سایت پی وی لرن. با یکی دیگر از سری جلسات دوره کامل آموزش node.js در خدمت شما هستیم. در جلسه قبل به آموزش محدود کردن نتایج MongoDB با node.js پرداختیم. در این جلسه قصد داریم به آموزش ترکیب یا ادغام کالکشن ها در MongoDB با node.js بپردازیم.
MongoDB یک پایگاه داده رابطه ای نیست اما شما می توانید با استفاده از عملگر lookup$ کالکشن ها (Collection) را با یکدیگر ترکیب کنید.
این عملگر به شما این امکان را میدهد تا کالکشنی که می خواهید با کالکشن جاری ادغام کنید و همینطور فیلدی که بر اساس آن ادغام باید انجام شود را مشخص کنید.
فرض کنید دو کالکشن orders و products را در اختیار دارید.
کالکشن orders:
1 2 3 | [ { _id: 1, product_id: 154, status: 1 } ] |
کالکشن products:
1 2 3 4 5 | [ { _id: 154, name: 'Chocolate Heaven' }, { _id: 155, name: 'Tasty Lemons' }, { _id: 156, name: 'Vanilla Dreams' } ] |
در مثال زیر فیلد های دو کالکشن بالا را اگر با هم تطابق داشته باشند، ترکیب میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("mydb"); dbo.collection('orders').aggregate([ { $lookup: { from: 'products', localField: 'product_id', foreignField: '_id', as: 'orderdetails' } } ]).toArray(function(err, res) { if (err) throw err; console.log(JSON.stringify(res)); db.close(); }); }); |
کد بالا را در فایلی به نام demo_mongodb_join.js ذخیره و اجرا کنید:
C:\Users\Your Name>node demo_mongodb_join.js |
خروجی:
1 2 3 4 5 | [ { "_id": 1, "product_id": 154, "status": 1, "orderdetails": [ { "_id": 154, "name": "Chocolate Heaven" } ] } ] |
همانطور که مشاهده میکنید، document های کالکشن products که با document های کالکشن orders مطاقبت داشتند، ادغام شده اند.
جلسه آموزش ادغام کالکشن ها در MongoDB با node.js و سری جلسات آموزش کار با پایگاه داده MongoDB در node.js نیز به پایان رسید.
امیدوارم این جلسات مفید واقه شده باشند.
موفق باشید.