MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara menanyakan/memperbarui sub dokumen di MongoDB menggunakan driver 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) Dalam kasus Anda, Anda baru saja mengambil instance DayData dan kemudian menjumlahkan semua nilai yang diperlukan secara eksplisit:

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;

Tapi itu tidak elegan. Jika Anda menginginkan solusi elegan, Anda perlu mengubah bidang Anda menjadi array seperti:

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

dan bekerja seperti dengan array. Beri tahu saya jika memungkinkan untuk mengubahnya menjadi array.

4) Dalam kasus Anda, sekali lagi, tidak ada solusi yang elegan. Yang dapat Anda lakukan hanyalah menelusuri bidang Anda dan membuat larik:

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

Atau Anda dapat membuat enumerator langsung di kelas, tetapi menurut saya itu berlebihan dalam kasus Anda.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menggunakan $regex dalam kueri agregasi mongodb dalam $match

  2. Doctrine ODM / MongoDB tidak mencoba lagi kueri?

  3. Urutkan array objek bersarang

  4. Luwak - hapus banyak dokumen dalam satu panggilan fungsi

  5. Bagaimana cara memperbarui koleksi MongoDB secara otomatis setiap tengah malam?