Uw explain()
outputs suggereren dat:
-
Er zijn 10962 objecten met
key.a : 456213154
. Uwdb.collection.find({"key.a": 456213154})
query gebruikte de index opkey.a
, en heeft 10962 objecten geretourneerd. -
Er zijn 0 objecten in uw collectie met
key.a : 456213154
en hebbenkey.b : { $exists : true }
. Dedb.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}})
query heeft uw index op sleutel gebruikt.
Zie de n
waarde voor elke query - dit is het geretourneerde aantal; en de cursor
waarde - dit is BtreeCursor
als er een index wordt gebruikt. In dit geval zou het logisch zijn waarom de eerste zoekopdracht veel langer duurt, omdat er aanzienlijk meer objecten moeten worden geretourneerd.
Weet u zeker dat de documenten met key.a : 456213154
waarden hebben ook key.b
waarden?
Bewerken:
De zoekopdracht met de $exists
param is de verkeerde syntaxis om het bestaan van ingesloten documenten te controleren.
Probeer db.collection.find({ "key.a" : 456213154, "key.b" : { "$exists" : true } })
.