Używam MongoDB i mam zbiór dokumentów o następującej strukturze:Index Bounds na Mongo Regex Szukaj
{
fName:"Foo",
lName:"Barius",
email:"[email protected]",
search:"foo barius"
}
buduję funkcję, która będzie wykonywać zwykłe wyszukiwanie słowa w polu search
. Aby zoptymalizować wydajność, zaindeksowałem tę kolekcję w polu wyszukiwania. Jednak sprawy wciąż są nieco powolne. Więc prowadził explain()
na kwerendzie próbki:
db.Collection.find({search:/bar/}).explain();
patrząc pod zwycięskiego planu, widzę stosować następujące granice Index:
"search": [
"[\"\", {})",
"[/.*bar.*/, /.*bar.*/]"
]
Drugi zestaw ma sens - to patrząc od wszystkiego, co zawiera pasek do wszystkiego, co zawiera pasek. Jednak pierwszy zestaw mnie oszałamia. Wygląda na to, że patrzy się w zakresie od ""
włącznie do {}
wyłącznie. Obawiam się, że ten dodatkowy zestaw ograniczeń spowalnia moje zapytanie. Czy to konieczne, aby zachować? Jeśli nie, jak mogę zapobiec dołączeniu go?
Czy ten sam problem, znalazłeś wyjaśnienie? – kirhgoff
@kirhgoff Którą wersję mongoDB używasz? – barbakini
@kirhgoff co używasz 'mongoDB native' lub' mongoose'. Sprawdź to - http://voidcanvas.com/mongoose-vs-mongodb-native/ –