2011-10-14 19 views

risposta

3

Non ho eseguito il benchmark, ma probabilmente significheranno le prestazioni. Apparentemente il "$ where" esegue javascript per ogni oggetto, ma "$ mod" è un operatore mongodb nativo, che dovrebbe essere molto più veloce, perché non c'è bisogno di eseguire alcun javascript per ogni oggetto. Dai anche un'occhiata al seguente frase dalla documentazione:

Javascript executes more slowly than the native operators listed on this page, 
but is very flexible. 

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-JavascriptExpressionsand%7B%7B%24where%7D%7D

+0

Avete qualche idea circa la risposta indice di @Andrew Orsich? – kamaci

+0

Per le query javascript non è possibile utilizzare gli indici, poiché il javascript deve essere valutato per ciascun oggetto, che viene selezionato con la query. Quindi: se hai la possibilità di scegliere tra un operatore integrato come * $ mod * e un javascript, il javascript dovrebbe sempre essere più lento, perché il javascript viene valutato per ogni oggetto * e * non può usare un indice, mentre il built-in l'operatore viene valutato solo quando la tua query viene analizzata da mongodb * e * può usare un indice. Sarebbe probabilmente interessante, per confrontare questo ... – aurora

+0

Grazie per la risposta. Solo un altro. Cosa intendi con l'indicizzazione posso leggerlo da qualsiasi luogo? Penso di non sapere cosa. – kamaci

1

Eventuali richieste javascript/regex in MongoDB non possono utilizzare gli indici e lavorare lento. Quindi la risposta alla tua domanda è sì, la documentazione dice delle prestazioni.

Maggiori informazioni su lato server JavaScript si possono trovare here