public class DayData
{
public string _id
{get;set;}
public string Data
{get;set;}
public HourData HR1
{get;set;}
public HourData HR2
{get;set;}
...
public HourData HR24
{get;set;}
}
public class HourData
{
public long _id
{get;set;}
public int Count
{get;set;}
public string Data
{get;set;}
}
// サンプルデータ
{
"_id": "2012_11_10",
"Data": "some data",
"HR1":
{
"_id": 1
"Count": 100,
"Data": "Hour 1 Data"
},
"HR2":
{
"_id": 2
"Count": 200,
"Data": "Hour 2 Data"
},
...
"HR24":
{
"_id": 24
"Count": 2400,
"Data": "Hour 24 Data"
}
}
次の質問があります(C#公式ドライバーを使用して):
DayData コレクションから単一の HourData ドキュメントを取得する方法 (単一のデータベースクエリを使用)? たとえば、DayData (_id="2012_11_10") の HR1 の HourData ドキュメントを取得する必要があります。Edit-1として試したコードスニペットを参照してください。
HourData ドキュメントを更新/アップサートしてカウントをインクリメントする方法 ( collection.update(Query, Update) のような単一のデータベース操作を使用)? たとえば、DayData (_id="2012_11_10") の HR1 のカウントをインクリメントする必要があります。
DayData (_id="2012_11_10") の HR1、HR2、...、HR24 のすべてのカウント値の合計を取得する方法 (集計関数を使用)。
すべての時間の HourData カウントを配列に変換する最良の方法は何ですか (DayData の場合)。たとえば、_id="2012_11_10" の DayData の場合、次のものが必要です。
int []カウント = [100,200,300, ... , 2400]
編集-1
このコードでは、_id=1 の HR1 の HourData と _id="2012_11_10" の DayData を取得しようとしていますが、何も返されません。
MongoCollection<HourData> dayInfo = mdb.GetCollection<HourData>("HourData");
var query = Query.And(Query.EQ("_id", "2012_11_10"), Query.EQ("HR1._id", 1));
MongoCursor<HourData> hri = dayInfo.Find(query);'