MongoDB Aggregation - Unwind Kullanımı
- 612
- (6)
- (5)
- 13 Mar 2022
MongoDB veritabanı içerisindeki bir collection olan products içerisindeki veriler ele alınacaktır.
MongoDB Compass uygulamasının Aggregation sekmesi üzerinden bir unwind aggregationı yazılabilir.
Koleksiyon içerisindeki dökümanların veri şeması aşağıdaki gibidir.
unwind işleminin amacı dökümanlarda bulunan dizilerin tek tek ayrı birer döküman olarak elde edilmesidir. Bu işlem yapılırken dizi elemanlarının ait oldukları dökümanlardan da veri elde edilecektir.
Kayıtlı her ürünün siparişi purchases isimli array içerisinde alt birer döküman olarak kayıtlıdır.
[
{
// unwind isimli stage ile her bir sipariş kaydı farklı dökümanlara ayrılır
$unwind: {
path: "$purchases",
preserveNullAndEmptyArrays: true
}
},
// project isimli stage ile elde edilecek veriye hangi alanların getirileceği belirlenir
{
$project: {
"productName": "$name",
"purchaseDate": "$purchases.date",
"productPrice": "$price",
"purchasePrice": {
$multiply: [ "$price", "$purchases.quantity" ]
}
}
}
]
Bu işlemi MongoDB Compass uygulaması içerisinde ilgili collection içerisinde Aggregations sekmesinde gerçekleştirebilirsiniz.
Bu aggregation işlemini veritabanı içerisinde bir view olarak kaydetmek isterseniz, save buttonunun yanındaki dropdown oku ile gerçekleştirebilirsiniz.
Veritabanı içerisinde oluşturacağınız view tıpkı bir collection gibi ilgili uygulamalarınızda sadece veri okumak için çağrılabilir. Böylece uygulama içerisinde aggregation çalıştırma zahmetinden kurtulmuş olursunuz. Ancak uygulayacağınız aggregation için bir arama ($match) ya da skip veya limit gibi parametre gerektiren işlemleri view üzerinden çalıştırmanız mümkün değildir (MongoDB 5.0.2 için).
İlişkili İçerikler
MongoDB ilişkisel olmayan veritabanına C# üzerinden veri girişi yapmak için bu içeriği inceleyebilir ve uygulayabilirsiniz.
MongoDB koleksiyonundan belli bir şema haline getirilmiş dökümanlar çekmek için aggregation son derece faydalı bir yöntemdir.