MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB Query Help - заявка за стойности на всеки ключ в под-обект

Бих предложил промяна на схемата, за да можете действително да правите разумни заявки в MongoDB.

От:

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

до:

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

След това можете да индексирате "settings.value" , и направете заявка като:

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

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

Промяната наистина е проста ..., тъй като премества името на настройката и стойността на настройката в напълно индексируеми полета и съхранява списъка с настройки като масив.

Ако не можете да промените схемата, можете да опитате решението на @JohnnyHK, но бъдете предупредени, че по същество това е най-лошият случай по отношение на производителността и няма да работи ефективно с индекси.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb и MAMP

  2. MongoDB $literal

  3. Как да използвате MongoDB Connection Pooling на AWS Lambda

  4. mongo - не можа да се свърже със сървър 127.0.0.1:27017

  5. как да заявявам дъщерни обекти в mongodb