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

MongoDB xử lý các truy vấn find (). Sort () như thế nào đối với các chỉ mục đơn và kết hợp?

Nếu tôi hiểu ý bạn, điều này có thể hữu ích:

Giả sử bạn có những tài liệu này để làm mẫu

{
    field1 : 1,
    field2 : 2,
},
{
    field1 : 2,
    field2 : 3,
},
{
    field1 : 1,
    field2 : 4,
}

Bước 1:bạn chỉ có chỉ mục cho đệ1 (tên của chỉ mục field1_1 )}:thực hiện:db.test3.find({field1:1}).sort({field2:1})

mongo sử dụng field1_1 chỉ mục để tìm kiếm trong tài liệu. kết quả của .explain () là:

"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,

Bước 2:thêm chỉ mục kết hợp của bạn, đặt tên là field1_1_field2_1 , bây giờ bạn có 2 chỉ mục cho trường 1.

thực hiện find().sort() truy vấn, bạn sẽ có

"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,

Kết hợp:

nếu bạn sử dụng db.test3.find({field1:1}).sort({field2:1}) , mongo sẽ sử dụng field1_1_field2_1 chỉ mục.

nếu bạn sử dụng db.test3.find({field1:1}) , mongo sẽ sử dụng field1_1 chỉ mục.

Tôi là trường hợp của bạn, Nếu bạn chỉ có field1_1_field2_1 lập chỉ mục và bạn đang thực hiện db.test3.find({field1:1}) , mongo sẽ sử dụng field1_1_field2_1 cả chỉ mục.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để chuyển đổi BsonDocument thành một đối tượng được gõ mạnh bằng trình điều khiển MongoDB C # chính thức?

  2. Percona Live 2017 - Bản tóm tắt của Somenines

  3. Xử lý các trường phổ biến Mongoose trong GraphQL

  4. cách thiết lập mogodb trong dịch vụ mới nổi có xác thực

  5. Thao tác cập nhật Mongodb bên trong mảng con