AggregationFrameworkの構文に変換されるLINQ構文を使用できます。次のModel
があると仮定します クラス:
public class Model
{
public DateTime Timestamp { get; set; }
public float Value { get; set; }
}
where
を使用できます タイムスタンプの範囲を指定してから、group
を使用します null
を使用 グループ化キーとして。 MongoDBドライバーはMin
を変換します 、Max
およびAverage
匿名タイプから$max
へ 、$min
および$avg
AggregationFramework構文から
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();
MongoDBドライバーでサポートされているアキュムレーターのリストは、にあります。ここ 。
編集:(Model)null
クエリを$group
に変換する必要があるため、が必要です _id
を使用 null
に設定 (ドキュメント
)集計で1つの結果を取得したいので。ドキュメントのタイプはModel
であるため、C#コンパイラの目的でのみキャストが必要です。 。