sql >> データベース >  >> NoSQL >> MongoDB

MongoDBクエリヘルプ-サブオブジェクト内の任意のキーの値をクエリします

    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. MVC.netのMongoDBからObjectIdを渡す方法

    2. 同じドキュメント内のフィールドを使用したMongodbクエリ

    3. Mongoose(ExpressJS)に保存する前にModelでデータをフォーマットする方法

    4. HadoopMapReduceジョブ実行フローチャート