Możesz użyć składni LINQ, która zostanie przetłumaczona na składnię Aggregation Framework. Zakładając, że masz następujący Model klasa:
public class Model
{
public DateTime Timestamp { get; set; }
public float Value { get; set; }
}
możesz użyć where aby określić zakres sygnatury czasowej, a następnie użyj group z null jako klucz grupujący. Sterownik MongoDB przetłumaczy Min , Max i Average z typu anonimowego do $max , $min i $avg ze składni agregacji Framework
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();
Listę akumulatorów obsługiwanych przez sterownik MongoDB można znaleźć tutaj .
EDYCJA:(Model)null jest wymagane, ponieważ zapytanie musi zostać przekształcone w $group z _id ustaw na null (dokumenty
), ponieważ chcesz uzyskać jeden wynik z agregatami. Rzutowanie jest wymagane tylko dla celów kompilatora C#, ponieważ dokument jest typu Model .