MongoDB'de Toplama İşlem Hattı Nasıl Kullanılır?

MongoDB'de Toplama İşlem Hattı Nasıl Kullanılır?
Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi yaptığınızda ortaklık komisyonu kazanabiliriz. Devamını oku.

Toplama hattı, MongoDB'de karmaşık sorguları çalıştırmanın önerilen yoludur. MongoDB'nin MapReduce'unu kullanıyorsanız, daha verimli hesaplamalar için toplama hattına geçmeniz daha iyi olur.





MUO Günün videosu İÇERİĞE DEVAM ETMEK İÇİN KAYDIRIN

MongoDB'de Toplama Nedir ve Nasıl Çalışır?

  Toplama boru hattı süreç taslağı

Toplama ardışık düzeni, gelişmiş çalıştırma için çok aşamalı bir süreçtir. MongoDB'deki sorgular . Verileri boru hattı adı verilen farklı aşamalardan geçirir. Bir seviyeden elde edilen sonuçları diğerinde operasyon şablonu olarak kullanabilirsiniz.





uluslararası telefon numarası sahibi nasıl bulunur

Örneğin, bir eşleştirme işleminin sonucunu, istenen çıktıyı elde edene kadar bu sıraya göre sıralamak için başka bir aşamaya aktarabilirsiniz.





Toplama hattının her aşamasında bir MongoDB operatörü bulunur ve bir veya daha fazla dönüştürülmüş belge oluşturulur. Sorgunuza bağlı olarak bir düzey, işlem hattında birden çok kez görünebilir. Örneğin, şunu kullanmanız gerekebilir: $sayımı veya $sıralama operatör toplama hattında birden fazla kez aşamalar gerçekleştirir.

Toplama Boru Hattının Aşamaları

Toplama hattı, verileri tek bir sorguda birden çok aşamadan geçirir. Birkaç aşama vardır ve bunların ayrıntılarını MongoDB belgeleri .



Aşağıda en sık kullanılanlardan bazılarını tanımlayalım.

$match Aşaması

Bu aşama, diğer toplama aşamalarına başlamadan önce belirli filtreleme koşullarını tanımlamanıza yardımcı olur. Toplama hattına dahil etmek istediğiniz eşleşen verileri seçmek için bunu kullanabilirsiniz.





$grup Aşaması

Grup aşaması, anahtar/değer çiftlerini kullanarak verileri belirli kriterlere göre farklı gruplara ayırır. Her grup çıktı belgesindeki bir anahtarı temsil eder.

Örneğin aşağıdakileri göz önünde bulundurun satış örnek veri:





  Örneğin örnek veriler

Toplama hattını kullanarak her ürün bölümü için toplam satış sayısını ve en yüksek satışları hesaplayabilirsiniz:

 { 
$group: {
    _id: $Section,
    total_sales_count: {$sum : $Sold},
    top_sales: {$max: $Amount},
  }
}

_id: $Bölüm çift, çıktı belgesini bölümlere göre gruplandırır. Belirterek top_sales_count Ve en iyi satışlar MongoDB, toplayıcı tarafından tanımlanan işleme göre yeni anahtarlar oluşturur; bu olabilir $toplam , $dakika , $maks. , veya $ortalama .

$atlama Aşaması

Şunu kullanabilirsiniz: $atla çıktıda belirli sayıda belgenin atlanması aşaması. Genellikle grup aşamasından sonra gelir. Örneğin, iki çıktı belgesi bekliyor ancak birini atlıyorsanız, toplama yalnızca ikinci belgenin çıktısını alacaktır.

Bir atlama aşaması eklemek için $atla toplama boru hattına operasyon:

 ..., 
{
    $skip: 1
  },

$ sort Aşaması

Sıralama aşaması, verileri azalan veya artan düzende düzenlemenizi sağlar. Örneğin, önceki sorgu örneğindeki verileri azalan düzende sıralayarak hangi bölümün en yüksek satışa sahip olduğunu belirleyebiliriz.

Ekle $sıralama önceki sorgunun operatörü:

 ..., 
{
    $sort: {top_sales: -1}
  },

$limit Aşaması

Sınırlama işlemi, toplama ardışık düzeninin göstermesini istediğiniz çıktı belgelerinin sayısını azaltmaya yardımcı olur. Örneğin, şunu kullanın: $ sınırı operatörün önceki aşamaya göre en yüksek satışları elde eden bölümü alması:

 ..., 
{
    $sort: {top_sales: -1}
  },

{"$limit": 1}

Yukarıdakiler yalnızca ilk belgeyi döndürür; sıralanmış çıktının en üstünde göründüğü için bu, en yüksek satışa sahip bölümdür.

$Proje Aşaması

$proje sahne, çıktı belgesini istediğiniz gibi şekillendirmenize olanak tanır. Kullanmak $proje operatörüyle, çıktıya hangi alanın dahil edileceğini belirleyebilir ve anahtar adını özelleştirebilirsiniz.

Örneğin, olmayan bir örnek çıktı $proje sahne şöyle görünüyor:

  Toplama ardışık düzeni için düzenlenmemiş verileri örnekleyin

Bakalım neye benziyor $proje sahne. Eklemek için $proje boru hattına:

 ..., 

{
        "$project": {
            "_id": 0,
            "Section": "$_id",
            "TotalSold": "$total_sales_count",
            "TopSale": "$top_sales",

        }
    }

Verileri daha önce ürün bölümlerine göre gruplandırdığımız için yukarıdakiler, çıktı belgesindeki her ürün bölümünü içerir. Ayrıca çıktıda toplu satış sayısının ve en yüksek satış özelliğinin şu şekilde olmasını sağlar: ToplamSatılan Ve En Çok Satan .

eylem merkezinde bluetooth simgesi yok

Son çıktı öncekine kıyasla çok daha temiz:

  Toplama işlem hattı aşamaları için örnek çıktı

$ Gevşeme Aşaması

$gevşemek Aşama, bir belge içindeki bir diziyi ayrı ayrı belgelere ayırır. Aşağıdakileri al Emirler veriler, örneğin:

  Örnek Siparişler verileri

Kullan $gevşemek yapıyı bozma aşaması öğeler diğer toplama aşamalarını uygulamadan önce dizi. Örneğin, gevşemeyi öğeler Her ürün için toplam geliri hesaplamak istiyorsanız dizi mantıklıdır:

 db.Orders.aggregate( 
[
  {
    "$unwind": "$items"
  },
  {
    "$group": {
      "_id": "$items.product",
      "total_revenue": { "$sum": { "$multiply": ["$items.quantity", "$items.price"] } }
    }
  },
  {
    "$sort": { "total_revenue": -1 }
  },

  {
        "$project": {
            "_id": 0,
            "Product": "$_id",
            "TotalRevenue": "$total_revenue",

        }
    }
])

Yukarıdaki toplama sorgusunun sonucu:

  Çözme aşaması için örnek sonuç

MongoDB'de Toplama İşlem Hattı Nasıl Oluşturulur

Toplama ardışık düzeni çeşitli işlemleri içerse de, daha önce öne çıkan aşamalar, her biri için temel sorgu da dahil olmak üzere bunların ardışık düzende nasıl uygulanacağı konusunda size bir fikir verir.

Öncekini kullanma satış veri örneğinde, toplama hattına daha geniş bir bakış açısı kazandırmak için yukarıda tartışılan aşamalardan bazılarını tek parça halinde ele alalım:

 db.sales.aggregate([ 

    {
        "$match": {
            "Sold": { "$gte": 5 }
            }
    },

        {

        "$group": {
            "_id": "$Section",
            "total_sales_count": { "$sum": "$Sold" },
            "top_sales": { "$max": "$Amount" },
            
        }

    },

    {
        "$sort": { "top_sales": -1 }
    },

    {"$skip": 0},

    {
        "$project": {
            "_id": 0,
            "Section": "$_id",
            "TotalSold": "$total_sales_count",
            "TopSale": "$top_sales",

        }
    }
    
])

Son çıktı daha önce gördüğünüz bir şeye benziyor:

  Toplama işlem hattı aşamaları için örnek çıktı

Toplama Ardışık Düzeni ve MapReduce Karşılaştırması

MongoDB 5.0'dan başlayarak kullanımdan kaldırılana kadar, MongoDB'de veri toplamanın geleneksel yolu MapReduce'du. Rağmen MapReduce'un daha geniş uygulamaları var MongoDB'nin ötesinde, toplama hattından daha az verimlidir ve haritayı yazmak ve işlevleri ayrı ayrı azaltmak için üçüncü taraf komut dosyalarının kullanılmasını gerektirir.

Öte yandan toplama hattı yalnızca MongoDB'ye özeldir. Ancak karmaşık sorguları yürütmek için daha temiz ve daha etkili bir yol sağlar. Basitlik ve sorgu ölçeklenebilirliğinin yanı sıra, öne çıkan ardışık düzen aşamaları çıktıyı daha özelleştirilebilir hale getirir.

Daha çok var toplama hattı ve MapReduce arasındaki farklar . MapReduce'tan toplama hattına geçerken bunları göreceksiniz.

MongoDB'de Büyük Veri Sorgularını Verimli Hale Getirin

MongoDB'deki karmaşık veriler üzerinde derinlemesine hesaplamalar yapmak istiyorsanız sorgunuzun mümkün olduğunca verimli olması gerekir. Toplama hattı gelişmiş sorgulama için idealdir. Verileri ayrı işlemlerde işlemek yerine, ki bu genellikle performansı düşürür, toplama, hepsini tek bir performanslı işlem hattında paketlemenize ve bir kez yürütmenize olanak tanır.

Toplama hattı MapReduce'tan daha verimli olsa da, verilerinizi dizine ekleyerek toplamayı daha hızlı ve daha verimli hale getirebilirsiniz. Bu, MongoDB'nin her toplama aşamasında taraması gereken veri miktarını sınırlar.