sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Query Help - fråga om värden på valfri nyckel i ett underobjekt

Jag skulle föreslå en schemaändring så att du faktiskt kan göra rimliga frågor i MongoDB.

Från:

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

till:

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

Sedan kan du indexera på "settings.value" , och gör en fråga som:

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

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

Ändringen är verkligen enkel ... eftersom den flyttar inställningsnamnet och inställningsvärdet till helt indexerbara fält och lagrar listan med inställningar som en array.

Om du inte kan ändra schemat kan du prova @JohnnyHKs lösning, men varnas för att det i princip är värsta fallet när det gäller prestanda och det kommer inte att fungera effektivt med index.



  1. Mongoose/mongoDB-frågan går med... men jag kommer från en SQL-bakgrund

  2. Hur får man tillbaka uppdaterat dokument från metoden findOneAndUpdate?

  3. Finns det något alternativ för att begränsa användningen av mongodb-minne?

  4. RuntimeError:-ERR Okänt kommando som kör redis gem på Ruby