Anda bisa menggunakan rute kerangka kerja agregasi, yang memiliki kapasitas untuk meratakan array melalui $unwind
operator. Ini akan menghasilkan catatan baru untuk setiap elemen dari bidang data daftar tempat pelepasan diterapkan. Ini pada dasarnya meratakan data.
Setelah meratakan data, Anda memerlukan $lookup
operator untuk melakukan "bergabung" pada products
bidang ke products
koleksi. Ulangi proses untuk skema buah bersarang.
Mari kita lihat contoh (belum diuji) untuk memahami ini dengan lebih baik
var Schema = require('../model/schema');
Schema.Shop.aggregate([
{ "$unwind": "$products" },
{
"$lookup": {
"from": "products",
"localField": "products",
"foreignField": "_id",
"as": "product"
}
},
{ "$unwind": "$product" },
{ "$unwind": "$product.fruits" },
{
"$lookup": {
"from": "fruits",
"localField": "product.fruits",
"foreignField": "_id",
"as": "fruits"
}
},
{
"$project": {
"nameShop": 1,
"nameProduct": "$product.nameProduct",
"nameFruit": "$fruits.nameFruit",
"price": "$fruits.price",
}
}
]).exec(function (err, result){
if (err) throw err;
console.log(result);
})
PENAFIAN :Kode di atas adalah kode yang belum diuji yang hanya berfungsi sebagai panduan dengan membuat beberapa asumsi bahwa Anda menjalankan kode di lingkungan pengujian dengan versi MongoDB dan luwak terbaru yang mendukung $lookup
operator DAN bahwa Anda dapat melakukan kueri agregasi yang sama di mongo Shell.