2017-11-29 9 views

答えて

1

MongoDBは、索引付けされた文書の詳細を取得する意味で索引の内容を検査することをサポートしていません。

db.collection.find({ "IsArchived": { "$eq": true } }) 

をまた、あなたが最後に.count()を追加することができます:あなたは、しかし、単純に索引付けされたドキュメントを取得するために、あなたのインデックス内の一つとして同じフィルタを使用して、コレクションに対してクエリを実行することができます

カウントを取得したい場合:

db.collection.find({ "IsArchived": { "$eq": true } }).count() 

インデックスが使用されているかどうかを確認するには次のクエリ:

db.collection.find({ "Name": "index check", "IsArchived": true }).explain() 

インデックスが使用されます場合(ケースをあるべきである)、その後"winningPlan"フィールド内でこのどこかのような何かを印刷する必要があり、上記のステートメントを発行:それは何かを印刷した場合

"inputStage" : { 
    "stage" : "IXSCAN", 
    "keyPattern" : { 
     "Name" : "index check" 
    }, 
    "indexName" : "<your index name>" 

このようにインデックスは使用されません:

"winningPlan" : { 
     "stage" : "COLLSCAN", 
+0

ニース、私はそれは私がこのインデックスがあることを探していた自信を与えないと思いますワーキング。 – CorB

0

私はちょっと厚くなっていたことが分かりました。私は "ユニーク"フラグを使用しているので、同じ名前のコレクションにアイテムを挿入するだけでインデックスをテストすることもできます。言い換えれば、インデックスのために:

{ // Note: using IsArchived: false instead of true 
    "unique" : true, 
    "name" : "Name_1", 
    "partialFilterExpression" : { 
     "IsArchived" : { 
      "$eq" : false 
     } 
    } 
} 

私はこれらの項目を挿入するための次のような結果を取得する必要があります

{ // Success 
    "Name" : "test1", 
    "IsArchived" : false 
} 

{ // Failure 
    "Name" : "test1", 
    "IsArchived" : false 
} 

{ // Success 
    "Name" : "test1", 
    "IsArchived" : true 
} 
関連する問題