Dựa trên truy vấn của bạn, tôi tưởng tượng rằng tài liệu của bạn trông giống như sau:
{
"_id" : 1,
"lc" : "eng",
"group" : "xyz",
"indices" : [
{
"text" : "as",
"pos" : 2
},
{
"text" : "text",
"pos" : 4
}
]
}
Tôi đã tạo một bộ sưu tập thử nghiệm với các tài liệu có định dạng này, tạo chỉ mục và chạy truy vấn mà bạn đã đăng với tùy chọn .explain ().
Chỉ mục đang được sử dụng như mong đợi:
> db.test.ensureIndex({"lc":1, "group":1, "indices.text":1, "indices.pos":1})
> db.test.find({ lc: "eng", group: "xyz", indices: { $elemMatch: { text: "as", pos: { $gt: 1 } } } }).explain()
{
"cursor" : "BtreeCursor lc_1_group_1_indices.text_1_indices.pos_1",
"isMultiKey" : true,
"n" : NumberLong(1),
"nscannedObjects" : NumberLong(1),
"nscanned" : NumberLong(1),
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : NumberLong(0),
"millis" : 0,
"indexBounds" : {
"lc" : [
[
"eng",
"eng"
]
],
"group" : [
[
"xyz",
"xyz"
]
],
"indices.text" : [
[
"as",
"as"
]
],
"indices.pos" : [
[
{
"$minElement" : 1
},
{
"$maxElement" : 1
}
]
]
},
"server" : "Marcs-MacBook-Pro.local:27017"
}
Bạn có thể tìm thấy tài liệu về tính năng .explain () tại đây: http://www.mongodb .org / display / DOCS / Giải thích
.explain () có thể được sử dụng để hiển thị thông tin về một truy vấn, bao gồm cả chỉ mục (nếu có) được sử dụng.