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

Permintaan untuk dokumen yang memiliki sub-bidang internal dari nilai yang diberikan

Ini selalu dimungkinkan dengan MongoDB karena selalu ada kemampuan untuk membuat kondisi kueri menggunakan Evaluasi JavaScript :

db.attrs.find(function() {
    var attrs = this.attrs;
    return Object.keys(attrs).some(function(key) {
       return attrs[key].value === "14"
    });
})

Di mana itu akan mengembalikan dokumen yang cocok dengan kondisi di sini dengan benar dengan mencari kemungkinan kunci dalam dokumen untuk nilai yang diperlukan.

Tapi itu bukan pertanyaan tentang "mungkin", tetapi lebih dari satu "apakah ini benar-benar ide yang bagus" , yang jawaban dasarnya adalah "Tidak".

Basis data adalah binatang yang berubah-ubah yang suka mengoptimalkan dengan hal-hal seperti indeks dan semacamnya, serta set operator yang diharapkan untuk membuat pencarian seefisien mungkin untuk digunakan. Jadi ya, Anda dapat menggunakan penerjemah bahasa yang secara efektif mengevaluasi kondisi kode di setiap dokumen, atau Anda dapat mempertimbangkan kembali pola desain Anda.

Basis data menyukai "pesanan", jadi berikan beberapa, karena ada struktur ulang terorganisir sederhana untuk data yang Anda usulkan:

{
    "attrs" : [
        { "key": "A1", "type" : "T1", "value" : "13" },
        { "key": "A2", "type" : "T2", "value" : "14" }
     ]
}

Diatur sedemikian rupa sehingga kueri menjadi sesederhana:

db.attrs.find({ "attrs.value": "14" })

Dan tentu saja dapat mendukung dan menggunakan indeks pada salah satu properti subdokumen dalam larik tersebut.

Bagaimanapun, MongoDB adalah "basis data", dan seperti semua basis data, MongoDB paling memperhatikan "nilai" propertinya daripada mencari menggunakan nama "kunci" itu. Jadi hal-hal yang mewakili "data" yang bermakna tidak boleh menjadi bagian dari nama "kunci", melainkan harus menjadi "nilai" dari "kunci" sebagai "pengidentifikasi", seperti yang ditunjukkan di atas.

Memiliki jalur yang konsisten ke data yang ingin Anda kueri adalah cara optimal untuk bekerja dengan data di dalam MongoDB. Menggunakan struktur di mana nama kunci terus berubah, tidak dapat dilalui oleh apa pun selain menjalankan kode, dan itu jauh lebih lambat dan lebih buruk untuk kinerja daripada menggunakan operasi dan fasilitas asli seperti indeks.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Indeks MongoDB dan $or operator

  2. MongoDB Gagal Memulai - ***batalkan setelah kegagalan fassert()

  3. Hubungkan dan kueri database Mongo melalui SSH dengan kunci pribadi di Python

  4. perbarui kolom koleksi di mongodb

  5. Nilai kenaikan Mongodb di dalam array bersarang