MongoDB Aggregation Pipeline Operatörleri Rehberi (Detaylı Anlatım ve Örnekler)

"MongoDB Aggregation Pipeline Operatörleri Rehberi (Detaylı Anlatım ve Örnekler)"

MongoDB, NoSQL veritabanı sistemleri arasında en popüler olanlardan biridir. Büyük veriler üzerinde karmaşık sorgular yapabilmek için Aggregation Pipeline adında güçlü bir sorgu sistemi sunar.
Bu rehberde MongoDB’de sık kullanılan aggregation operatörlerini, mantıklarını ve örnek kullanımlarını detaylı şekilde inceleyeceğiz.


1. Aggregation Pipeline Nedir?

Aggregation Pipeline, verileri adım adım işleyerek filtreleme, gruplaya, dönüştürme ve hesaplama yapmamızı sağlayan bir yapıdır. SQL'deki SELECT, WHERE, GROUP BY gibi işlemler tek pipeline içinde yapılabilir.

Basit bir örnek:

db.products.aggregate([
  { $match: { category: "Electronics" } },  // Filtre
  { $group: { _id: "$brand", total: { $sum: 1 } } } // Gruplama ve sayma
]);

2. Temel Pipeline Aşamaları

2.1 $match (Filtreleme)

SQL’deki WHERE gibidir.

{ $match: { status: "active" } }

2.2 $group (Gruplama)

SQL’deki GROUP BY gibidir.

{ $group: { _id: "$category", total: { $sum: 1 } } }

2.3 $project (Alan Seçme/Dönüştürme)

SQL’deki SELECT gibi çalışır.

{ $project: { name: 1, price: 1, totalPrice: { $multiply: ["$price", "$qty"] } } }

2.4 $sort (Sıralama)

{ $sort: { price: -1 } } // Azalan

2.5 $limit ve $skip

Sayfalama işlemlerinde kullanılır.

{ $limit: 10 }
{ $skip: 10 }

2.6 $lookup (Join)

Farklı koleksiyonları birleştirir.

{ 
  $lookup: {
    from: "categories",
    localField: "category_id",
    foreignField: "_id",
    as: "category_info"
  }
}

3. Mantıksal Operatörler

Operatör Açıklama
$and Tüm koşullar sağlanmalı.
$or En az bir koşul sağlanmalı.
$not Koşulun tersini alır.
$nor Hiçbir koşul sağlanmamalı.

Örnek:

{ $match: { $and: [ { age: { $gte: 18 } }, { status: "active" } ] } }

4. Karşılaştırma Operatörleri

Operatör Açıklama
$eq Eşittir (=).
$ne Eşit değil.
$gt Büyük.
$gte Büyük veya eşit.
$lt Küçük.
$lte Küçük veya eşit.
$in Listede var mı.
$nin Listede yok mu.

5. Matematiksel Operatörler

Operatör Açıklama
$sum Toplama veya sayma.
$avg Ortalama.
$min En küçük.
$max En büyük.
$multiply Çarpma.
$divide Bölme.
$add Toplama.
$subtract Çıkarma.
$mod Mod (kalan) hesabı.

Örnek:

{ $group: { _id: null, totalRevenue: { $sum: "$price" }, avgRevenue: { $avg: "$price" } } }

6. Koşullu Operatörler

Operatör Açıklama
$cond IF-ELSE mantığı.
$ifNull Null ise alternatif değer.
$switch Çoklu koşul kontrolü.

Örnek:

{
  $project: {
    statusText: {
      $cond: { if: { $gte: ["$score", 50] }, then: "Geçti", else: "Kaldı" }
    }
  }
}

7. Dizi (Array) Operatörleri

Operatör Açıklama
$size Dizi uzunluğu.
$push Gruplamada array’e ekler.
$addToSet Tekrar etmeyen ekleme.
$first İlk değer.
$last Son değer.
$filter Diziyi filtreler.
$map Diziyi dönüştürür.
$reduce Diziyi tek değere indirger.

8. Metin Operatörleri

Operatör Açıklama
$regex Regex araması.
$text Full-text search.
$concat String birleştirme.
$substr Parça alma.
$toLower Küçük harf.
$toUpper Büyük harf.

9. Değişkenler

Değişken Açıklama
$$ROOT Tüm belgeyi temsil eder.
$$CURRENT O anki alanı temsil eder.
$$REMOVE Alanı silmek için kullanılır.

MongoDB’nin Aggregation Pipeline operatörleri sayesinde SQL’de karmaşık olan pek çok işlemi tek sorguda yapabilirsiniz. Bu rehberde anlattığımız operatörler, günlük veri analizi, raporlama ve istatistik çıkarma işlemlerinizde size büyük kolaylık sağlayacaktır.

📌 Tavsiyem:

  • $match’i pipeline’ın en başında kullanın → Performans artar.

  • Gereksiz alanları $project ile çıkarın → Bellek tasarrufu olur.

  • Büyük datasetlerde index kullanın → Sorgular hızlanır.

Aykhan Gasimzade Aykhan Gasimzade verified icon
Full Stack Developer

Merhaba! Ben Aykhan, 1999 doğumlu bir Azerbaycanlıyım ve 2017 yılından bu yana programlamayla ilgileniyorum. Teknolojinin büyülü dünyası beni her zaman etkilemiştir ve bu merakımı kendi blogumda paylaşarak daha geniş bir kitleyle buluşturmayı amaçlıyorum.