sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo consultar/actualizar un subdocumento en MongoDB usando el controlador C#

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) En su caso, simplemente recupere la instancia de DayData y luego sume todos los valores necesarios explícitamente:

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;

Pero no es elegante. Si desea la solución elegante, necesita transformar sus campos en una matriz como:

DayData
{
HR:
[{
Count: 1,
Data: "Hour 1 data"
},
{
},
...
]
}

y trabajar como con la matriz. Avíseme si es posible transformarlo en una matriz.

4) En su caso, nuevamente, no hay ninguna solución elegante. Lo que puede hacer simplemente revise sus campos y cree una matriz:

int[] Counts = new int[24];
Counts[0] = myData.HR1.Count;
...

O puede crear un enumerador directamente en la clase, pero creo que es excesivo en su caso.