MongoDB Aggregation - Unwind Kullanımı
- 577
- (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.