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) Dalam kasus Anda, Anda baru saja mengambil instance DayData dan kemudian menjumlahkan semua nilai yang diperlukan secara eksplisit:
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;
Tapi itu tidak elegan. Jika Anda menginginkan solusi elegan, Anda perlu mengubah bidang Anda menjadi array seperti:
DayData
{
HR:
[{
Count: 1,
Data: "Hour 1 data"
},
{
},
...
]
}
dan bekerja seperti dengan array. Beri tahu saya jika memungkinkan untuk mengubahnya menjadi array.
4) Dalam kasus Anda, sekali lagi, tidak ada solusi yang elegan. Yang dapat Anda lakukan hanyalah menelusuri bidang Anda dan membuat larik:
int[] Counts = new int[24];
Counts[0] = myData.HR1.Count;
...
Atau Anda dapat membuat enumerator langsung di kelas, tetapi menurut saya itu berlebihan dalam kasus Anda.