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)W twoim przypadku po prostu pobierasz instancję DayData, a następnie sumujesz wszystkie potrzebne wartości:
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;
Ale to nie jest eleganckie. Jeśli chcesz eleganckiego rozwiązania, musisz przekształcić swoje pola w tablicę, na przykład:
DayData
{
HR:
[{
Count: 1,
Data: "Hour 1 data"
},
{
},
...
]
}
i pracuj jak z tablicą. Daj mi znać, czy jest możliwe przekształcenie go w tablicę.
4) W twoim przypadku znowu nie ma żadnego eleganckiego rozwiązania. Możesz po prostu przejść przez pola i utworzyć tablicę:
int[] Counts = new int[24];
Counts[0] = myData.HR1.Count;
...
Możesz też stworzyć enumerator bezpośrednio w klasie, ale myślę, że w twoim przypadku jest to przesada.