MongoDB’de Aggregate Pipeline ile Verileri Gruplama
MongoDB'de veri gruplamak için
aggregate pipeline kullanılır. Bu işlem, belirli bir aşamadan geçirerek verileri toplu hale getirmeyi sağlar. Aşağıda, verilerin nasıl gruplandığını anlatan temel adımlar yer almaktadır.
Aşama 1: $match
Bu aşama, belirli kriterlere göre belgeleri filtreler. Örneğin, yalnızca belirli bir tarih aralığı içindeki verileri almak için kullanılabilir.
Aşama 2: $group
Gruplama işlemi için en önemli aşamadır. Aşağıdaki gibi kullanılır:
- key: Gruplama yapılacak alan (örneğin, "kategori").
- accumulator: Gruplama sırasında yapılacak hesaplamalar (örneğin, toplam veya ortalama).
Örnek kullanım:
```
db.collection.aggregate([
{ $match: { tarih: { $gte: ISODate("2023-01-01"), $lte: ISODate("2023-12-31") } } },
{ $group: { _id: "$kategori", toplam: { $sum: "$miktar" } } }
])
```
Aşama 3: $sort
Grupladıktan sonraki verilerin sıralanması için kullanılır. Örneğin, toplam miktara göre azalan sırada sıralamak için.
Aşama 4: $project
Sonuçların formatını değiştirmek için bu aşama kullanılır. İstenmeyen alanları çıkartabilir veya yeni alanlar ekleyebilirsiniz.
Örnek Aggregate Pipeline
Özetle, bir örnek aggregate pipeline aşağıdaki gibidir:
```
db.collection.aggregate([
{ $match: { durum: "aktif" } },
{ $group: { _id: "$sektor", toplam: { $sum: "$deger" } } },
{ $sort: { toplam: -1 } },
{ $project: { sektor: "$_id", toplam: 1, _id: 0 } }
])
```
Bu pipeline, "aktif" olan verileri gruplayarak sektör bazında toplam değerleri verir ve bunları büyükten küçüğe sıralar.