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) Trong trường hợp của bạn, bạn chỉ cần truy xuất phiên bản DayData và sau đó tính tổng tất cả các giá trị cần thiết một cách rõ ràng:
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;
Nhưng nó không thanh lịch. Nếu bạn muốn có giải pháp tốt, bạn cần chuyển đổi các trường của mình thành mảng như:
DayData
{
HR:
[{
Count: 1,
Data: "Hour 1 data"
},
{
},
...
]
}
và làm việc như với mảng. Hãy cho tôi biết nếu có thể chuyển đổi nó thành một mảng.
4) Trong trường hợp của bạn, một lần nữa, không có bất kỳ giải pháp thanh lịch nào. Những gì bạn có thể làm chỉ cần xem qua các trường của mình và tạo một mảng:
int[] Counts = new int[24];
Counts[0] = myData.HR1.Count;
...
Hoặc bạn có thể tạo bảng điều tra ngay trong lớp nhưng tôi nghĩ nó quá mức cần thiết trong trường hợp của bạn.