MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Truy vấn Mongodb chậm với ký hiệu dấu chấm

explain() của bạn kết quả đầu ra gợi ý rằng:

  1. 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ên key.a và trả lại 10962 đối tượng.

  2. 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 } }) .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose tìm một cái và đẩy sang mảng tài liệu

  2. Tổng hợp MongoDB với $ lookup chỉ bao gồm (hoặc dự án) một số trường để trả về từ truy vấn

  3. Sao chép và đổi tên trường tài liệu trong MongoDB

  4. Lỗi khi cố gắng cập nhật phần tử mảng MongoDb

  5. Truy vấn ISODate time tính bằng perl