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

tạo chỉ mục được bao phủ cho khung tổng hợp

Để tận dụng tối đa chỉ mục, bạn cần có $ khớp đủ sớm trong quy trình sử dụng tất cả các trường trong chỉ mục. Và tránh sử dụng $and vì nó không cần thiết và trong phiên bản (2.4) hiện tại có thể khiến một chỉ mục không được sử dụng đầy đủ (may mắn là đã được sửa cho phiên bản 2.6 sắp tới).

Tuy nhiên, truy vấn không hoàn toàn chính xác vì bạn cần sử dụng $elemMatch để đảm bảo rằng cùng một phần tử được sử dụng để đáp ứng các trường tên và giá trị.

Truy vấn của bạn phải là:

db.Phone.aggregate([
{$match: {  type: "Samsung", 
           attributes: { $all: [
                {$elemMatch: {"value":"100", "type" : "BatteryLife" }},
                {$elemMatch: {"value":"200$", "type" : "Price" }}
           ] }
        }
}]);

Bây giờ, nó không sẽ là một truy vấn được bao phủ, vì các thuộc tính. giá trị và tên được nhúng, chưa kể đến thực tế là tên không có trong chỉ mục.

Bạn cần chỉ mục là {"type":1, "attributes.value":1, "attributes.name":1} để có hiệu suất tốt nhất, mặc dù nó vẫn chưa được đề cập, nhưng nó sẽ được lựa chọn nhiều hơn bây giờ.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Node kiểm tra xem objectid có hợp lệ không

  2. Làm cách nào để biết tài liệu có thuộc tính hết hạn đã bị xóa?

  3. Chuyển đổi chênh lệch ngày thành năm để tính tuổi trong MongoDB

  4. Cuộc chiến của các cơ sở dữ liệu NoSQL - So sánh MongoDB và CouchDB

  5. Tổng hợp và cập nhật MongoDB