Jestem pewien, że stwierdziły listę kilka razy pomimo wyniku wyszukiwania Google są wypełnione tylko ludzie mówią ci, jak to zrobić:
- Jest
eval
eval
ma naturalne zdolności do być łatwym do wstrzyknięcia, to jak nierównomierny w stosunku do SQL SQL, jeśli nie zbudujesz wokół niego pełno skali, uciekając do biblioteki, to zepsu ci to. Korzystając z tych funkcji, skutecznie zastępujesz bezpieczniejszy język ojczysty w MongoDB, co jest tak samo niebezpieczne, jak każdy stary kod SQL.
- Wymaga globalnej blokady i może wykonać blokadę zapisu i nie zostanie zwolniona, dopóki operacja nie zostanie całkowicie wykonana, w przeciwieństwie do innych operacji, które zostaną zwolnione w niektórych przypadkach.
eval
działa tylko w prawyborach i nigdy inny członek repliki ustawić
- To jest w zasadzie działa, niekontrolowany, tona JS w pakiecie V8/SpiderMonkey envo że pochodzi z MongoDB z pełną zdolność dotykać żadnej części twoja baza danych i polecenia administratora, czy to brzmi bezpiecznie?
- NIE jest to MongoDB, ani nie jest to "MongoDBs SQL", działa w obrębie wbudowanego środowiska JS, a nie w samym MongoDBs C++ (w przeciwieństwie do frameworka agregacji).
- Ze względu na poprzedni punkt jest bardzo powolny w porównaniu do wielu innych opcji, to odnosi się również do użytkowania
$where
.
To powinno wystarczyć, aby zacząć od tego frontu.
OK, dziękuję! O tym stwierdzeniu: "Ze względu na poprzedni punkt jest bardzo powolny w porównaniu do wielu innych opcji ...". Wierzę, że kiedy to napisałeś, masz na myśli powolne czytanie, prawda? Mój problem polega na tym, że wykonałem funkcję nad każdym dokumentem z mojej kolekcji, a read-update-write jest naprawdę powolny, gdy używam ngo-monopod-niodajskiego sterownika. Jakieś przemyślenia na ten temat? – EdMelo
@EduardoMelo Dowolna operacja, JavaScript będzie wolniejszy w wykonaniu niż kod C++ w dowolnym dniu, nie tylko to, ale nie jest natywnie wstawiany do JS, tj. Enigne JS jest uruchamiane, wątek wykonany, a następnie przechodzi kod C++ funkcja JS uruchamiana przez silnik. Hmm, jeśli jest nad każdym dokumentem, to brzmi jak jednorazowe polecenie, zrobiłbym to za pośrednictwem konsoli na tym samym serwerze, co master MongoDB – Sammaye
Czy problemy związane z blokowaniem/współbieżnością/wydajnością są nadal aktualne? Obecna dokumentacja sugeruje, że od wersji 2.4 domyślny silnik JavaScript teraz "pozwala na jednoczesne wykonywanie wielu operacji JavaScript" bez uzyskiwania blokad. http://docs.mongodb.org/manual/core/server-side-javascript/ –