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

$elemMatchのMongoDBインデックス

    あなたの質問に基づいて、あなたの文書は次のようになっていると思います:

    {
        "_id" : 1,
        "lc" : "eng",
        "group" : "xyz",
        "indices" : [
            {
                "text" : "as",
                "pos" : 2
            }, 
            {
                "text" : "text",
                "pos" : 4
            }
        ]
    }
    

    この形式のドキュメントを使用してテストコレクションを作成し、インデックスを作成して、.explain()オプションを使用して投稿したクエリを実行しました。

    インデックスは期待どおりに使用されています:

    > db.test.ensureIndex({"lc":1, "group":1, "indices.text":1, "indices.pos":1})
    > db.test.find({ lc: "eng", group: "xyz", indices: { $elemMatch: { text: "as", pos: { $gt: 1 } } } }).explain()
    {
        "cursor" : "BtreeCursor lc_1_group_1_indices.text_1_indices.pos_1",
        "isMultiKey" : true,
        "n" : NumberLong(1),
        "nscannedObjects" : NumberLong(1),
        "nscanned" : NumberLong(1),
        "scanAndOrder" : false,
        "indexOnly" : false,
        "nYields" : 0,
        "nChunkSkips" : NumberLong(0),
        "millis" : 0,
        "indexBounds" : {
            "lc" : [
                [
                    "eng",
                    "eng"
                ]
            ],
            "group" : [
                [
                    "xyz",
                    "xyz"
                ]
            ],
            "indices.text" : [
                [
                    "as",
                    "as"
                ]
            ],
            "indices.pos" : [
                [
                    {
                        "$minElement" : 1
                    },
                    {
                        "$maxElement" : 1
                    }
                ]
            ]
        },
        "server" : "Marcs-MacBook-Pro.local:27017"
    }
    

    .explain()機能に関するドキュメントは、次の場所にあります: http://www.mongodb .org / display / DOCS / Explain

    .explain()は、使用されているインデックス(存在する場合)など、クエリに関する情報を表示するために使用できます。




    1. NodejsMongodbが複数のコレクションを更新

    2. Redis Luaスクリプトを呼び出すときにKEYS配列とARGV配列があるのはなぜですか?

    3. $andクエリは結果を返しません

    4. MongoDB C#:IDシリアル化の最良のパターン