Öncelikle MongoDB'ye hoş geldiniz!
Hatırlanması gereken şey, MongoDB'nin veri depolamak için bir "NoSQL" yaklaşımı kullandığı, bu yüzden seçimlerin, birleşmelerin vb. Düşüncelerini zihninizden yok edin. Verilerinizi saklama biçimi belgeler ve koleksiyonlar biçimindedir, bu da verileri depolama konumlarınızdan dinamik bir şekilde ekleyip elde etmenize olanak tanır.
Bununla birlikte, $ çözme parametresinin arkasındaki kavramı anlamak için, önce alıntı yapmaya çalıştığınız kullanım durumunun ne dediğini anlamalısınız. Mongodb.org'dan alınan örnek belge aşağıdaki gibidir:
{
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 }
}
Etiketlerin aslında 3 öğeden oluşan bir dizi olduğuna dikkat edin, bu durumda "eğlenceli", "iyi" ve "eğlenceli".
$ Çözülmenin yaptığı şey, her öğe için bir belgeyi soymanıza ve elde edilen bu belgeyi döndürmenize izin vermektir. Bunu klasik bir yaklaşımla düşünmek için, "etiketler dizisindeki her öğe için, yalnızca o öğeye sahip bir belge döndür" ifadesinin eşdeğeri olacaktır.
Böylece, aşağıdakileri çalıştırmanın sonucu:
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
aşağıdaki belgeleri döndürür:
{
"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
}
Sonuç dizisinde değişen tek şeyin etiketler değerinde döndürülen şey olduğuna dikkat edin. Bunun nasıl çalıştığına dair ek bir referansa ihtiyacınız varsa, buraya bir bağlantı ekledim . Umarım bu yardımcı olur ve şimdiye kadar karşılaştığım en iyi NoSQL sistemlerinden birine girmenizde iyi şanslar.