Sie können die LINQ-Syntax verwenden, die in die Syntax von Aggregation Framework übersetzt wird. Angenommen, Sie haben folgendes Model
Klasse:
public class Model
{
public DateTime Timestamp { get; set; }
public float Value { get; set; }
}
Sie können where
verwenden um den Zeitstempelbereich anzugeben und dann group
zu verwenden mit null
als Gruppierungsschlüssel. Der MongoDB-Treiber übersetzt Min
, Max
und Average
vom anonymen Typ in $max
, $min
und $avg
aus der Aggregation Framework-Syntax
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();
Eine Liste der vom MongoDB-Treiber unterstützten Akkumulatoren finden Sie unter hier .
BEARBEITEN:der (Model)null
ist erforderlich, da die Abfrage in $group
umgewandelt werden muss mit _id
auf null
gesetzt (docs
), da Sie mit Aggregaten ein Ergebnis erhalten möchten. Das Casting ist nur für den C#-Compiler erforderlich, da das Dokument vom Typ Model
ist .