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.