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

Bantuan Kueri MongoDB - kueri tentang nilai kunci apa pun dalam sub-objek

Saya akan menyarankan perubahan skema sehingga Anda benar-benar dapat melakukan kueri yang masuk akal di MongoDB.

Dari:

{
    "userId": "12347",
    "settings": {
        "SettingA": "blue",
        "SettingB": "blue",
        "SettingC": "green"
    }
}

ke:

{
    "userId": "12347",
    "settings": [
        { name: "SettingA", value: "blue" },
        { name: "SettingB", value: "blue" },
        { name: "SettingC", value: "green" }
    ]    
}

Kemudian, Anda dapat mengindeks di "settings.value" , dan lakukan kueri seperti:

db.settings.ensureIndex({ "settings.value" : 1})

db.settings.find({ "settings.value" : "blue" })

Perubahannya sangat sederhana ..., karena memindahkan nama setelan dan nilai setelan ke bidang yang dapat diindeks sepenuhnya, dan menyimpan daftar setelan sebagai larik.

Jika Anda tidak dapat mengubah skema, Anda dapat mencoba solusi @JohnnyHK, tetapi berhati-hatilah bahwa pada dasarnya ini adalah kasus terburuk dalam hal kinerja dan tidak akan bekerja secara efektif dengan indeks.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. menanyakan koleksi tanpa melewati skema di luwak

  2. Tidak dapat mengautentikasi ke mongo, autentikasi gagal

  3. SchemaType mana di Mongoose yang Terbaik untuk Timestamp?

  4. Pencarian diacriticInSensitive MongoDB tidak menampilkan semua baris beraksen (kata-kata dengan tanda diakritik) seperti yang diharapkan dan sebaliknya

  5. Luwak:CastError:Cast ke ObjectId gagal untuk nilai [objek Obyek] di jalur _id