Estoy seguro de haber indicado la lista un par de veces a pesar de que el resultado de la búsqueda de Google está lleno solo de personas que te dicen cómo hacerlo:
- Es
eval
eval
tiene habilidades naturales para inyectarse fácilmente, es como un equivalente no PDO de SQL, si no crea una biblioteca de escape a gran escala a su alrededor, lo arruinará. Al usar estas funciones, está reemplazando efectivamente el lenguaje nativo más seguro de MongoDB por algo que es tan inseguro como cualquier SQL antiguo.- Se necesita un bloqueo global y puede tomar un bloqueo de escritura y no se liberará hasta que la operación se complete por completo, a diferencia de otras operaciones que se liberarán en ciertos casos.
eval
solo funciona en Primarios y nunca en ningún otro miembro del conjunto de réplicas- Básicamente está ejecutando, sin control, una tonelada de JS en un paquete V8/spidermonkey envo que viene con MongoDB con capacidad total para tocar cualquier parte de su base de datos y comandos de administración, ¿suena seguro?
- NO es MongoDB y tampoco es "MongoDBs SQL", se ejecuta en un entorno JS integrado, no en el código MongoDBs C++ en sí mismo (a diferencia del marco de agregación).
- Debido al punto anterior es EXTREMADAMENTE lento en comparación con muchas otras opciones, esto va para
$where
uso también.
Eso debería ser suficiente para empezar en este frente.