MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak wykonać zapytanie/aktualizację poddokumentu w MongoDB za pomocą sterownika 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)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.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nieoczekiwany kod wyjścia mongo 100. Ponowne uruchamianie

  2. Jak wybrać poddokument mongo według id z mangustą?

  3. Najlepszy sposób na połączenie z MongoDB za pomocą Node.js

  4. wyszukiwanie w agregacji mongodb

  5. Znajdź lub utwórz z Mongoose