Votre explain()
les résultats suggèrent que :
-
Il y a 10962 objets qui ont
key.a : 456213154
. Votredb.collection.find({"key.a": 456213154})
la requête a utilisé l'index surkey.a
, et a renvoyé 10962 objets. -
Il y a 0 objets dans votre collection qui ont
key.a : 456213154
et avoirkey.b : { $exists : true }
. Ledb.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}})
la requête a utilisé votre index sur la clé.
Voir le n
valeur pour chaque requête - il s'agit du nombre renvoyé ; et le cursor
valeur - c'est BtreeCursor
si un index est utilisé. Dans ce cas, il serait logique que la première requête prenne beaucoup plus de temps, car elle a beaucoup plus d'objets à renvoyer.
Êtes-vous sûr que les documents avec key.a : 456213154
les valeurs ont aussi key.b
valeurs ?
Modifier :
La requête avec le $exists
param est la mauvaise syntaxe pour vérifier l'existence dans les documents intégrés.
Essayez db.collection.find({ "key.a" : 456213154, "key.b" : { "$exists" : true } })
.