MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Agregasi MongoDB C# dengan LINQ

Anda dapat menggunakan sintaks LINQ yang diterjemahkan ke dalam sintaks Kerangka Agregasi. Dengan asumsi Anda telah mengikuti Model kelas:

public class Model
{
    public DateTime Timestamp { get; set; }
    public float Value { get; set; }
}

anda dapat menggunakan where untuk menentukan rentang stempel waktu dan kemudian gunakan group dengan null sebagai kunci pengelompokan. Driver MongoDB akan menerjemahkan Min , Max dan Average dari jenis anonim menjadi $max , $min dan $avg dari sintaks Kerangka Agregasi

var q = from doc in Col.AsQueryable()
        where doc.Timestamp > DateTime.Now.AddDays(-3)
        where doc.Timestamp < DateTime.Now.AddDays(3)
        group doc by (Model)null into gr
        select new
        {
            Avg = (double)gr.Average(x => x.Value),
            Min = gr.Min(x => x.Value),
            Max = gr.Max(x => x.Value)
        };

var result = q.First();

Daftar akumulator yang didukung oleh driver MongoDB dapat ditemukan di sini .

EDIT:(Model)null diperlukan karena kueri harus diubah menjadi $group dengan _id setel ke null (dokumen ) karena Anda ingin mendapatkan satu hasil dengan agregat. Casting diperlukan hanya untuk tujuan kompiler C# karena doc bertipe Model .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Masukkan kinerja node-mongodb-native

  2. MongoDB:cara menemukan dokumen yang mengabaikan case sensitif, aksen, dan persen seperti logika (%)

  3. Luwak dengan mongodb bagaimana cara mengembalikan objek yang baru saja disimpan?

  4. MongoDB - $project dokumen bersarang ke tingkat root

  5. Mongo Map Kurangi pilih tanggal terbaru