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

Apakah pesanan penting di bson_iter_find di mongo c driver

untuk langsung menjawab pertanyaan Anda, Anda harus menghubungi bson_iter_init (http://api.mongodb. org/libbson/current/bson_iter_init.html ) untuk setiap kueri "baru" yang Anda buat terhadap data.

Agaknya Anda memiliki satu panggilan bson_iter_init pada objek bson_t. Anda hanya perlu yang lain.

   bson_iter_t iterator1;
   bson_iter_t iterator2;

   if (bson_iter_init (&iterator1, doc) &&
       bson_iter_find (&iterator1, "fieldA") ) {
       //Do something with fieldA
    }

   if (bson_iter_init (&iterator2, doc) &&
       bson_iter_find (&iterator2, "fieldB") ) {
       //Do something with fieldB
    }
    bson_free(doc); //DONT FORGET TO DESTROY THE BSON_T object at the end.

atau, cukup gunakan perintah gabungan bson_iter_init_find (http://api.mongodb.org/ libbson/current/bson_iter_init_find.html ) jika Anda tidak ingin berurusan dengan internal.

   bson_iter_t iterator1;
   bson_iter_t iterator2;

   if (bson_iter_init_find (&iterator1, doc, "fieldA") ) {
       //Do something with fieldA
    }

   if (bson_iter_init_find (&iterator2, doc,"fieldB") ) {
       //Do something with fieldB
    }
    bson_free(doc); //DONT FORGET TO DESTROY THE BSON_T object at the end.

Jika Anda tertarik dengan alasannya, saya mengerjakan bsonsearch (https://github.com/bauman/bsonsearch ) perpustakaan dan memiliki masalah serupa.

Berhati-hatilah dalam menangani pointer. Hampir semua hal yang tersembunyi di libbson memanipulasi pointer ke suatu area di memori.

Alasan pengurutan materi adalah karena Anda menginisialisasi sekali, ketika Anda memanggil iter_find, libbson akan mencari melewati B untuk menemukan A . Panggilan berikutnya untuk menemukan B akan mencari ke akhir buffer dan melewatkannya. Anda menghindari masalah itu dengan menginisialisasi ulang iterator kembali ke posisi 0 dan memulai pencarian dari sana.

Kecuali Anda tahu persis apa yang Anda lakukan dan ingin mengoptimalkan pencarian di sekitar buffer, mungkin yang terbaik adalah menginisialisasi ulang iterator untuk setiap temuan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Akhir input JSON yang tidak terduga dengan Kompas MongoDB

  2. Mengapa kita perlu, apa keuntungan menggunakan luwak?

  3. AngkaAritmatika panjang dalam cangkang Mongo

  4. Spring Data MongoDB:Proyeksi dan Agregasi

  5. berbeda dengan banyak bidang dan dengan kondisi di mana di mongodb