MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да заявите/актуализирате поддокумент в MongoDB с помощта на 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) Във вашия случай просто извличате екземпляра DayData и след това изрично сумирате всички необходими стойности:

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;

Но не е елегантно. Ако искате елегантното решение, трябва да трансформирате вашите полета в масив като:

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

и работи като с масива. Кажете ми дали е възможно да го трансформирам в масив.

4) Във вашия случай отново няма елегантно решение. Това, което можете да направите, просто преминете през вашите полета и създайте масив:

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

Или можете да създадете изброител направо в класа, но мисля, че е пресилено във вашия случай.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да се свържете с екземпляр на MongoDB EC2

  2. Как Mongolab REST API удостоверява

  3. MongoDB:Извикване на Count() срещу проследяване на броя в колекция

  4. Проблем с публикуването на JSON данни (със заявка за възел) към Express сървър за запазване в MongoDB

  5. MongoDb текстово търсене с езикова поддръжка