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

Bagaimana menemukan nama bidang MongoDB pada kedalaman yang sewenang-wenang

Anda benar dalam pernyataan tertentu bahwa dokumen BSON bukan dokumen XML. Karena XML dimuat ke dalam struktur pohon yang terdiri dari "node", pencarian pada kunci arbiter cukup mudah.

Dokumen MonoDB tidak begitu mudah untuk diproses, dan ini adalah "database" dalam banyak hal, sehingga umumnya diharapkan memiliki "keseragaman" lokasi data tertentu untuk memudahkan "pengindeksan" dan pencarian.

Meskipun demikian, itu bisa dilakukan. Tapi tentu saja ini berarti proses rekursif dijalankan di server dan ini berarti pemrosesan JavaScript dengan $where .

Sebagai contoh shell dasar, tetapi function umum hanyalah argumen string ke $where operator di tempat lain:

db.collection.find(
  function () {
    var findKey = "find-this",
        findVal = "please find me";

    function inspectObj(doc) {
      return Object.keys(doc).some(function(key) {
        if ( typeof(doc[key]) == "object" ) {
          return inspectObj(doc[key]);
        } else {
          return ( key == findKey && doc[key] == findVal );
        }
      });
    }
    return inspectObj(this);
  }
)

Jadi pada dasarnya, uji kunci yang ada di objek untuk melihat apakah mereka cocok dengan "nama bidang" dan konten yang diinginkan. Jika salah satu kunci tersebut merupakan "objek", maka rekursif ke dalam fungsi dan periksa lagi.

JavaScript .some() memastikan bahwa kecocokan "pertama" yang ditemukan akan kembali dari fungsi pencarian dengan memberikan true result dan mengembalikan objek di mana "kunci/nilai" itu ada pada kedalaman tertentu.

Perhatikan bahwa $where pada dasarnya berarti melintasi seluruh koleksi Anda kecuali ada beberapa filter kueri valid selain yang dapat diterapkan ke "indeks" pada koleksi.

Jadi gunakan dengan hati-hati, atau tidak sama sekali dan kerjakan dengan menyusun ulang data menjadi bentuk yang lebih bisa diterapkan.

Tapi ini akan memberi Anda pasangan Anda.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menggunakan Enkripsi untuk Melindungi data MongoDB

  2. Panggil fungsi di dalam agregat mongodb?

  3. Performa MongoDB dengan struktur data yang berkembang

  4. MongoDB $atanh

  5. MongoDB, MapReduce dan sortir