sql >> Database >  >> NoSQL >> MongoDB

MongoDB Query Help - query op waarden van een sleutel in een subobject

Ik zou een schemawijziging voorstellen, zodat je daadwerkelijk redelijke query's kunt doen in MongoDB.

Van:

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

naar:

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

Vervolgens kunt u indexeren op "settings.value" , en voer een zoekopdracht uit zoals:

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

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

De wijziging is echt eenvoudig ..., omdat het de naam van de instelling en de instellingswaarde verplaatst naar volledig indexeerbare velden en de lijst met instellingen als een array opslaat.

Als je het schema niet kunt wijzigen, kun je de oplossing van @JohnnyHK proberen, maar wees gewaarschuwd dat dit in feite het slechtste geval is wat betreft prestaties en dat het niet effectief zal werken met indexen.



  1. Hoe te updaten als het bestaat, anders een nieuw document invoegen?

  2. ClusterControl - Geavanceerd back-upbeheer - MongoDB

  3. Hoe het gebruikte_geheugen in Redis van brandstof te voorzien?

  4. Hoe een verbinding met Redis Sentinel tot stand te brengen met behulp van de Jedis-bibliotheek?