2011-10-14 15 views
5

lo empleo en leer ese documento: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24modmongodb Fast consultas Javascript

$mod 

El operador mod $ le permite hacer consultas rápidas de módulo para reemplazar un caso común para los que la cláusula. Por ejemplo, la siguiente consulta $ donde:

db.things.find("this.a % 10 == 1") 

se puede sustituir por:

db.things.find({ a : { $mod : [ 10 , 1 ] } }) 

Así que no entendía lo que significa fast aquí. ¿Actuación?

Respuesta

3

No he comparado esto, pero probablemente significará rendimiento. Aparentemente el "$ where" ejecuta javascript para cada objeto, pero "$ mod" es un operador nativo de mongodb, que debería ser mucho más rápido, porque no hay necesidad de ejecutar ningún javascript para cada objeto. Tienen también un vistazo a la siguiente frase de la documentación:

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

¿Tiene usted alguna idea sobre el índice de respuesta @ Andrew Orsich? – kamaci

+0

Para consultas javascript no es posible usar índices, porque el javascript debe evaluarse para cada objeto, que se selecciona con su consulta. Entonces, si tiene la opción entre un operador integrado como * $ mod * y un javascript, el javascript siempre debe ser más lento, porque el javascript se evalúa para cada objeto * y * no puede usar un índice, mientras que el builtin el operador se evalúa solo cuando su consulta es analizada por mongodb * y * puede usar un índice. Probablemente sería interesante, para comparar este ... – aurora

+0

Gracias por su respuesta. Sólo uno más. ¿Qué quiere decir con indexación puedo leerlo desde cualquier lugar? Creo que no sé qué. – kamaci

1

Cualquier consulta javascript/expresiones regulares en mongodb no pueden utilizar los índices y el trabajo lento. Así que la respuesta a su pregunta es sí, la documentación dice sobre el rendimiento.

Más información sobre JavaScript del lado del servidor se pueden encontrar here