Sono sicuro di aver indicato l'elenco un paio di volte nonostante il risultato di ricerca di Google sia pieno solo di persone che ti dicono come farlo:
- È
eval
eval
ha capacità naturali per essere facilmente iniettato, è come un equivalente non PDO a SQL, se non crei una libreria di escape su larga scala attorno ad esso ti incasini. Usando queste funzioni stai effettivamente sostituendo la lingua nativa più sicura di MongoDB con qualcosa che è altrettanto insicuro di qualsiasi vecchio SQL là fuori.- Richiede un blocco globale e può richiedere il blocco di scrittura e non verrà rilasciato fino al completamento dell'operazione, a differenza di altre operazioni che verranno rilasciate in determinati casi.
eval
funziona solo su Primari e mai su nessun altro membro del set di repliche- In pratica è in esecuzione, deselezionata, una tonnellata di JS in un pacchetto V8/spidermonkey envo fornito con MongoDB con la piena capacità di toccare qualsiasi parte del database e dei comandi di amministrazione, suona sicuro?
- NON è MongoDB e non è nemmeno "MongoDBs SQL", viene eseguito in un ambiente JS integrato, non nel codice C++ di MongoDB stesso (a differenza del framework di aggregazione).
- A causa del punto precedente è ESTREMAMENTE lento rispetto a molte altre opzioni, questo vale per
$where
anche l'utilizzo.
Dovrebbe essere sufficiente per iniziare su questo fronte.