sto usando MongoDB, e ho una raccolta di documenti con la seguente struttura:Indice Bounds su Mongo Regex Ricerca
{
fName:"Foo",
lName:"Barius",
email:"[email protected]",
search:"foo barius"
}
Sto costruendo una funzione che eseguirà una ricerca espressione regolare sul campo search
. Per ottimizzare le prestazioni, ho indicizzato questa raccolta nel campo di ricerca. Tuttavia, le cose sono ancora un po 'lente. Così mi sono imbattuto un explain()
su una query di esempio:
db.Collection.find({search:/bar/}).explain();
Guardando sotto il piano vincente, compaiono i seguenti limiti indice usati:
"search": [
"[\"\", {})",
"[/.*bar.*/, /.*bar.*/]"
]
Il secondo set ha un senso - che sta cercando da tutto ciò che contiene barra a tutto ciò che contiene bar. Tuttavia, il primo set mi sconcerta. Sembra che guardi nei limiti di ""
incluso a {}
esclusivo. Sono preoccupato che questo set di limiti extra stia rallentando la mia richiesta. È necessario mantenere? Se non lo è, come posso evitare che venga incluso?
Ha lo stesso problema, hai trovato una spiegazione? – kirhgoff
@kirhgoff Quale versione di mongoDB stai usando? – barbakini
@kirhgoff cosa stai usando 'mongoDB native' o' mongoose'. Controlla questo - http://voidcanvas.com/mongoose-vs-mongodb-native/ –