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
.