explain()
của bạn kết quả đầu ra gợi ý rằng:
-
Có 10962 đối tượng có
key.a : 456213154
.db.collection.find({"key.a": 456213154})
của bạn truy vấn đã sử dụng chỉ mục trênkey.a
và trả lại 10962 đối tượng. -
Có 0 đối tượng trong bộ sưu tập của bạn có
key.a : 456213154
và cókey.b : { $exists : true }
.db.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}})
truy vấn đã sử dụng chỉ mục của bạn trên khóa.
Xem n
giá trị cho mỗi truy vấn - đây là số được trả về; và cursor
giá trị - đây là BtreeCursor
nếu một chỉ mục được sử dụng. Trong trường hợp này, sẽ có lý tại sao truy vấn đầu tiên mất nhiều thời gian hơn, bởi vì nó có nhiều đối tượng hơn đáng kể để trả về.
Bạn có chắc chắn rằng các tài liệu có key.a : 456213154
giá trị cũng có key.b
giá trị?
Chỉnh sửa:
Truy vấn với $exists
param là cú pháp sai để kiểm tra sự tồn tại trong các tài liệu được nhúng.
Hãy thử db.collection.find({ "key.a" : 456213154, "key.b" : { "$exists" : true } })
.