sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB Query Help - forespørgsel om værdier af enhver nøgle i et underobjekt

Jeg vil foreslå en skemaændring, så du rent faktisk kan lave rimelige forespørgsler i MongoDB.

Fra:

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

til:

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

Derefter kan du indeksere på "settings.value" , og lav en forespørgsel som:

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

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

Ændringen er virkelig enkel ..., da den flytter indstillingens navn og indstillingsværdi til fuldt indekserbare felter og gemmer listen over indstillinger som en matrix.

Hvis du ikke kan ændre skemaet, kan du prøve @JohnnyHKs løsning, men vær advaret om, at det dybest set er worst case med hensyn til ydeevne, og det vil ikke fungere effektivt med indekser.



  1. Sådan gør du:Brug HBase Bulk Loading, og hvorfor

  2. Hvordan stopper man mongodb-server på Windows?

  3. Hvordan pipelines i node.js til redis?

  4. Begivenhed på nøgle udløber