Ich bin mit MongoDB, und ich habe eine Sammlung von Dokumenten mit folgenden Struktur:Index Bounds auf Mongo Regex Suchen
{
fName:"Foo",
lName:"Barius",
email:"[email protected]",
search:"foo barius"
}
Ich baue eine Funktion, die ein regulären Ausdruck sucht auf das search
Feld durchführen wird . Um die Leistung zu optimieren, habe ich diese Sammlung im Suchfeld indiziert. Die Dinge sind jedoch immer noch ein bisschen langsam. Also lief ich eine explain()
auf einer Beispielabfrage:
db.Collection.find({search:/bar/}).explain();
unter dem Gewinnplan Sehen, sehe ich die folgenden Indexgrenzen verwendet:
"search": [
"[\"\", {})",
"[/.*bar.*/, /.*bar.*/]"
]
Der zweite Satz macht Sinn - es ist von allem suchen, enthält bar zu allem, was bar enthält. Der erste Satz verblüfft mich jedoch. Es scheint in den Grenzen von ""
einschließlich {}
exklusiv zu suchen. Ich bin besorgt, dass dieser zusätzliche Satz von Grenzen meine Abfrage verlangsamt. Ist es notwendig zu halten? Wenn nicht, wie kann ich verhindern, dass es einbezogen wird?
Hat das gleiche Problem, hast du eine Erklärung gefunden? – kirhgoff
@kirhgoff Welche Version von mongoDB benutzt du? – barbakini
10 @kirhgoff was benutzt du 'mongoDB native' oder' mongoose'. Sieh dir das an - http://voidcanvas.com/mongoose-vs-mongodb-native/ –