MongoDB Aggregation - Unwind Kullanımı

  • 464
  • (4)
  • (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.

mongodb unwind

Koleksiyon içerisindeki dökümanların veri şeması aşağıdaki gibidir.

mongodb unwind

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.

mongodb unwind

Bu aggregation işlemini veritabanı içerisinde bir view olarak kaydetmek isterseniz, save buttonunun yanındaki dropdown oku ile gerçekleştirebilirsiniz.

mongodb view

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.

Veri mevcut ise güncelleme, mevcut değil ise ekleme işlemine upsert denmektedir. Update ve Insert kelimelerinin birleşiminden üretilmiştir.

Paylaşın
Etiket Bulutu