8 Şubat 2021 Pazartesi

MongoDB aggregate ve match

Giriş
Match ile nesneler belirtilen kritere göre seçilirler. Yani "where" anlamına gelir. Match kullanırken and/or gibi şeyler kullanılabilir. Ayrıca eşleştirmek için sadece eşitlik değil, gt gibi büyüklük/küçüklük karşılaştırması da yapılabilir

Örnek - match + group + sum
Designing Data Intensive Applications kitabında gösterildiği gibi şöyle yaparız. Burada gruplama yapılıyor ve gruptaki toplam bulunuyor.
db.observations.aggregate([
  { $match: { family: "Sharks" } },
  { $group: {
      _id: {
        year: { $year: "$observationTimestamp" },
        month: { $month: "$observationTimestamp" }
      },
      totalAnimals: { $sum: "$numAnimals" }
    } }
]);
Eğer SQL kullanıyor olsaydık aynı şey şöyle yapardık
SELECT date_trunc('month', observation_timestamp) AS observation_month,
  SUM(num_animals) AS total_animals
FROM observations
WHERE family = 'Sharks'
GROUP BY observation_month;
Örnek - or 
Şöyle yaparız. Bu örnek diğerlerine benziyor. Farklı olarak sadece match için $or kullanılıyor.
db.collection.aggregate([
  {
    $match: {
      $or: [
        {
          "subject.type": "Core"
        },
        {
          "subject.type": "Elective"
        }
      ]
    }
  },
  {
    $group: {
      _id: "$subject.type",
      count: {
        $sum: 1
      }
    }
  }
])
Örnek - $or + $gt
Şöyle yaparız
db.articles.aggregate(
    [{ $match: { 
          $or: [{ 
            score: { $gt: 90 } 
          }, { 
            author: "dave" 
          }}] 
    }}]
);

Hiç yorum yok:

Yorum Gönder