Din explain()
utdata tyder på att:
-
Det finns 10962 objekt som har
key.a : 456213154
. Dindb.collection.find({"key.a": 456213154})
sökfrågan använde indexet påkey.a
, och returnerade 10962 objekt. -
Det finns 0 objekt i din samling som har
key.a : 456213154
och harkey.b : { $exists : true }
.db.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}})
fråga använde ditt index på nyckel.
Se n
värde för varje fråga - detta är siffran som returneras; och cursor
värde - detta är BtreeCursor
om ett index används. I det här fallet skulle det vara vettigt varför den första frågan tar mycket längre tid, eftersom den har betydligt fler objekt att returnera.
Är du säker på att dokumenten med key.a : 456213154
värden har också key.b
värden?
Redigera:
Frågan med $exists
param är fel syntax för att kontrollera existens i inbäddade dokument.
Försök med db.collection.find({ "key.a" : 456213154, "key.b" : { "$exists" : true } })
.