Du kan bruge LINQ-syntaks, som bliver oversat til Aggregation Frameworks syntaks. Forudsat at du har følgende Model
klasse:
public class Model
{
public DateTime Timestamp { get; set; }
public float Value { get; set; }
}
du kan bruge where
for at angive tidsstemplets område og derefter bruge group
med null
som grupperingsnøgle. MongoDB driver vil oversætte Min
, Max
og Average
fra anonym type til $max
, $min
og $avg
fra Aggregation Framework-syntaks
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();
Liste over akkumulatorer understøttet af MongoDB-driveren kan findes her .
EDIT:(Model)null
er påkrævet, fordi forespørgslen skal transformeres til $group
med _id
indstillet til null
(dokumenter
), da du ønsker at få ét resultat med aggregater. Casting er påkrævet kun til C# compiler formål, da doc er af typen Model
.