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

C#ドライバーを使用してMongoDBでサブドキュメントをクエリ/更新する方法

    1)

    QueryComplete = Query.EQ(_id, "2012_11_10");
    DayData myData = db.GetCollection<DayData>("DayDataCollection").FindOne(query);
    // As HourData is the class member you can retrieve it from the instance of the DayData:
    HourData myHour = myData.HR1;
    

    2)

    QueryComplete = Query.EQ(_id, "2012_11_10");
    UpdateBuilder update = Update.Inc("HR1.Count", 1);
    db.GetCollection<DayData>("DayDataCollection").Update(query, update, SafeMode.True)
    

    ;

    3)あなたの場合、DayDataインスタンスを取得してから、必要なすべての値を明示的に合計します。

    QueryComplete = Query.EQ(_id, "2012_11_10");
    DayData myData = db.GetCollection<DayData>("DayDataCollection").FindOne(query);
    // As HourData is the class member you can retrieve it from the instance of the DayData:
    int sum = myData.HR1.Count + myData.HR2.Count + ... + myData.HR24.Count;
    

    しかし、それはエレガントではありません。洗練されたソリューションが必要な場合は、フィールドを次のような配列に変換する必要があります。

    DayData
    {
    HR:
    [{
    Count: 1,
    Data: "Hour 1 data"
    },
    {
    },
    ...
    ]
    }
    

    アレイと同じように機能します。配列に変換できるかどうか教えてください。

    4)あなたの場合も、エレガントな解決策はありません。フィールドを調べて配列を作成するだけで何ができるか:

    int[] Counts = new int[24];
    Counts[0] = myData.HR1.Count;
    ...
    

    または、クラスで列挙子を作成することもできますが、あなたの場合はやり過ぎだと思います。




    1. マングースはデータベースの最後の10エントリを検索します

    2. Pythonフラスコ動的パラメータをデコレータに渡す方法

    3. redis、express、socket.ioを使用してセッションを機能させるにはどうすればよいですか?

    4. MongoDBをnodejsに接続しているときに、ReplicaSetNoPrimaryおよびMongoServerSelectionErrorエラーが発生する