MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB Query Help - zapytanie o wartości dowolnego klucza w podobiekcie

Sugerowałbym zmianę schematu, aby można było faktycznie wykonywać rozsądne zapytania w MongoDB.

Od:

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

do:

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

Następnie możesz zaindeksować "settings.value" i wykonaj zapytanie takie jak:

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

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

Zmiana jest naprawdę prosta... ponieważ przenosi nazwę ustawienia i wartość ustawienia do w pełni indeksowanych pól i przechowuje listę ustawień w postaci tablicy.

Jeśli nie możesz zmienić schematu, możesz wypróbować rozwiązanie @JohnnyHK, ale pamiętaj, że jest to w zasadzie najgorszy przypadek pod względem wydajności i nie będzie działał efektywnie z indeksami.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak pobrać szczegóły z mongo db i wysłać lub zapisać w obiekcie w metodzie nodejs Fork?

  2. Uzyskiwanie wyniku $grupy z liczbą grup

  3. Jak wykonać zapytanie tablicowe identyfikatorów w Mongoose?

  4. Bitwa o bazy danych NoSQL — porównanie funkcji NoSQL MongoDB i MSSQL

  5. MongoDB $toInt