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 检索 HR1 的 HourData 文档(其中 _id="2012_11_10")。请参阅我尝试作为 Edit-1 的代码片段。
如何更新/更新 HourData 文档以增加其计数(使用单个数据库操作,例如:collection.update(Query, Update))?例如,我需要增加 DayData 的 HR1 计数(其中 _id="2012_11_10")。
如何检索 DayData 的 HR1、HR2、...、HR24 的所有计数值的总和(其中 _id="2012_11_10")(使用一些聚合函数)。
将所有小时的 HourData 计数转换为数组(对于任何 DayData)的最佳方法是什么。例如,对于 _id="2012_11_10" 的 DayData,我需要:
int []Counts = [100,200,300, ... , 2400]
编辑-1
使用此代码,我打算获取 HR1 的 HourData,其中 _id=1 和 DayData,_id="2012_11_10",但它不返回任何内容。
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);'