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

MongoDB lập chỉ mục trên các tài liệu con không được sử dụng dựa trên cú pháp của truy vấn

Tôi nghĩ rằng tôi đã tìm ra nó sau khi kiểm tra các tài liệu mongo. Về cơ bản, có sự khác biệt về ngữ nghĩa giữa hai điều đó. Về cơ bản, ở dạng đầu tiên của truy vấn {c: {d: d1}} , mongo giả định rằng bạn đang chỉ định toàn bộ subocument. Vì vậy, nếu bạn có tài liệu con {c: {d: d1, e: e1}} , nó sẽ không khớp.

OTOH, dạng thứ hai của truy vấn {'c.d': d1} ngụ ý rằng bạn chỉ xác định một kết quả phù hợp trên một trường trong tài liệu phụ. Điều này sẽ phù hợp ngay cả khi tiểu tài liệu có các trường khác hoặc toàn bộ tài liệu phụ.

Sự khác biệt này kéo dài đến chỉ mục. _ensureIndex({c: 1})_ensureIndex({'c.d': 1}) là hai chỉ mục khác nhau và mặc dù chỉ mục đầu tiên lập chỉ mục toàn bộ tài liệu con, nó sẽ không được sử dụng nếu bạn truy vấn trên một trường riêng lẻ với c.d ký hiệu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. làm cách nào để thêm giá trị vào đầu mảng trong mongodb?

  2. Không thể chuyển giá trị của tham số vào kho lưu trữ Symfony findOneBy

  3. Cách đặt khóa chính trong MongoDB?

  4. Sự khác biệt giữa kích thước và dung lượng là gì Kích thước được hiển thị bởi hàm Mongo stats ()

  5. Tạo bộ sưu tập trống trong mongodb