Din explain()
output tyder på, at:
-
Der er 10962 objekter, der har
key.a : 456213154
. Dindb.collection.find({"key.a": 456213154})
forespørgslen brugte indekset påkey.a
, og returnerede 10962 objekter. -
Der er 0 objekter i din samling, der har
key.a : 456213154
og harkey.b : { $exists : true }
.db.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}})
forespørgslen brugte dit indeks på nøgle.
Se n
værdi for hver forespørgsel - dette er det returnerede tal; og cursor
værdi - dette er BtreeCursor
hvis der bruges et indeks. I dette tilfælde ville det give mening, hvorfor den første forespørgsel tager meget længere tid, fordi den har betydeligt flere objekter at returnere.
Er du sikker på, at dokumenterne med key.a : 456213154
værdier har også key.b
værdier?
Rediger:
Forespørgslen med $exists
param er den forkerte syntaks til at kontrollere eksistensen i indlejrede dokumenter.
Prøv db.collection.find({ "key.a" : 456213154, "key.b" : { "$exists" : true } })
.