explain()
出力は次のことを示唆しています:
-
key.a : 456213154
を持つ10962個のオブジェクトがあります 。db.collection.find({"key.a": 456213154})
クエリはkey.a
のインデックスを使用しました 、および10962オブジェクトを返しました。 -
コレクションには、
key.a : 456213154
を持つオブジェクトが0個あります。key.b : { $exists : true }
があります 。db.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}})
クエリはキーのインデックスを使用しました。
n
を参照してください 各クエリの値-これは返される数値です。およびcursor
値-これはBtreeCursor
です インデックスが使用されている場合。この場合、返されるオブジェクトが大幅に多いため、最初のクエリにはるかに長い時間がかかる理由は理にかなっています。
key.a : 456213154
のドキュメントを確認してください 値にはkey.b
もあります 値?
編集:
$exists
を使用したクエリ paramは、埋め込まれたドキュメント内の存在をチェックするための間違った構文です。
db.collection.find({ "key.a" : 456213154, "key.b" : { "$exists" : true } })
を試してください 。