sql >> データベース >  >> NoSQL >> MongoDB

LINQを使用したMongoDBC#アグリゲーション

    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#コンパイラの目的でのみキャストが必要です。 。



    1. データベーストリガー一致式の$orセレクターが、データベーストリガーを構成するときにネストの第2レベルで機能しません

    2. MongoDB-特定のExplain出力を解釈します

    3. レプリカセットMongoDBを停止します

    4. NoSQLデータベースの戦い-MongoDBとCassandraの比較