Pertama, selamat datang di MongoDB!
Hal yang perlu diingat adalah bahwa MongoDB menggunakan pendekatan "NoSQL" untuk penyimpanan data, jadi hilangkan pikiran memilih, bergabung, dll. Dari pikiran Anda. Cara penyimpanan data Anda 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, pertama-tama Anda harus memahami kasus penggunaan yang coba Anda 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 3 item, dalam hal ini menjadi "menyenangkan", "baik", dan "menyenangkan".
Apa yang dilakukan $ unwind adalah memungkinkan Anda mengupas dokumen untuk setiap elemen dan mengembalikan dokumen yang dihasilkan. Untuk memikirkan ini dalam pendekatan klasik, itu akan menjadi ekuivalen dengan "untuk setiap item dalam larik tag, kembalikan dokumen dengan hanya item itu".
Jadi, hasil dari menjalankan sebagai berikut:
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
akan mengembalikan dokumen-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 membantu, dan semoga berhasil dengan Anda terjun ke salah satu sistem NoSQL terbaik yang pernah saya temui sejauh ini.