Tôi đang sử dụng MongoDB, và tôi có một bộ sưu tập các tài liệu với cấu trúc sau:Index Bounds trên Mongo Regex Tìm kiếm
{
fName:"Foo",
lName:"Barius",
email:"[email protected]",
search:"foo barius"
}
Tôi đang xây dựng một chức năng mà sẽ thực hiện tìm kiếm biểu hiện thường xuyên trên các lĩnh vực search
. Để tối ưu hóa hiệu suất, tôi đã lập chỉ mục bộ sưu tập này trên trường tìm kiếm. Tuy nhiên, mọi thứ vẫn còn hơi chậm. Vì vậy, tôi chạy một explain()
trên một truy vấn mẫu:
db.Collection.find({search:/bar/}).explain();
Nhìn theo kế hoạch chiến thắng, tôi thấy các giới hạn chỉ số sau đây được sử dụng:
"search": [
"[\"\", {})",
"[/.*bar.*/, /.*bar.*/]"
]
Tập thứ hai làm cho tinh thần - nó nhìn từ bất cứ thứ gì có chứa thanh vào bất kỳ thứ gì có chứa thanh. Tuy nhiên, tập đầu tiên làm tôi bối rối. Dường như nó nằm trong giới hạn của ""
, bao gồm {}
độc quyền. Tôi lo ngại rằng tập hợp các giới hạn này đang làm chậm truy vấn của tôi. Nó có cần thiết để giữ không? Nếu không, làm thế nào tôi có thể ngăn không cho nó được đưa vào?
Có cùng một vấn đề, bạn đã tìm thấy một lời giải thích? – kirhgoff
@kirhgoff Bạn đang sử dụng phiên bản mongoDB nào? – barbakini
@kirhgoff bạn đang sử dụng 'mongoDB native' hoặc' mongoose'. Kiểm tra điều này - http://voidcanvas.com/mongoose-vs-mongodb-native/ –