Pertama, selamat datang di MongoDB!
Hal yang perlu diingat adalah bahwa MongoDB menggunakan pendekatan "NoSQL" untuk penyimpanan data, jadi hilangkan pikiran tentang pemilihan, penggabungan, dll. dari pikiran Anda. Cara penyimpanan data Anda adalah dalam bentuk dokumen dan koleksi, yang memungkinkan cara dinamis untuk menambahkan dan memperoleh data dari lokasi penyimpanan Anda.
Karena itu, untuk memahami konsep di balik parameter $unwind, Anda harus terlebih dahulu memahami apa yang dikatakan use case yang Anda coba kutip. Contoh dokumen dari mongodb.org adalah sebagai berikut:
{
title : "this is my title" ,
author : "bob" ,
posted : new Date () ,
pageViews : 5 ,
tags : [ "fun" , "good" , "fun" ] ,
comments : [
{ author :"joe" , text : "this is cool" } ,
{ author :"sam" , text : "this is bad" }
],
other : { foo : 5 }
}
Perhatikan bagaimana tag sebenarnya adalah larik dari 3 item, dalam hal ini adalah "menyenangkan", "bagus", dan "menyenangkan".
Apa yang dilakukan $unwind adalah memungkinkan Anda untuk mengupas dokumen untuk setiap elemen dan mengembalikan dokumen yang dihasilkan. Untuk memikirkan hal ini dalam pendekatan klasik, itu akan sama dengan "untuk setiap item dalam larik tag, kembalikan dokumen hanya dengan barang itu".
Dengan demikian, hasil menjalankannya sebagai berikut:
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
akan mengembalikan dokumen berikut:
{
"result" : [
{
"_id" : ObjectId("4e6e4ef557b77501a49233f6"),
"title" : "this is my title",
"author" : "bob",
"tags" : "fun"
},
{
"_id" : ObjectId("4e6e4ef557b77501a49233f6"),
"title" : "this is my title",
"author" : "bob",
"tags" : "good"
},
{
"_id" : ObjectId("4e6e4ef557b77501a49233f6"),
"title" : "this is my title",
"author" : "bob",
"tags" : "fun"
}
],
"OK" : 1
}
Perhatikan bahwa satu-satunya hal yang berubah dalam larik hasil adalah apa yang dikembalikan dalam nilai tag. Jika Anda memerlukan referensi tambahan tentang cara kerjanya, saya telah menyertakan tautan di sini. Semoga ini bisa membantu, dan semoga sukses dengan terjun Anda ke salah satu sistem NoSQL terbaik yang pernah saya temui sejauh ini.