Похоже, вы ссылаетесь на функции на стороне сервера .
Создать / обновить функцию на стороне сервера так же просто, как обновить коллекцию system.js
:
db.system.js.save( { _id : "foo" , value : function( x , y ){ return x + y; } } );
Проблема здесь действительно заключается в «использовании» серверных функций.Сначала вы должны написать какие-то неуклюжие операторы обновления / вставки.Во-вторых, это не хранимые процедуры.Они не скомпилированы для скорости с целью запуска их на сервере.
Если вы используете серверную функцию для запросов, она не будет использовать индексы для чего-либо внутри этой функции.Кроме того, он будет использовать функцию eval
под капотом, которая может заблокировать вашу БД.
Кроме того, нет триггеров, поэтому вы не можете использовать их и для триггеров.
В целом, для серверных функций не так уж много пользы, поэтому, вероятно, они получают 3 абзаца в документах.
Если вам нужны расширенные функции запросов, взгляните на новую структуру агрегации.Если вы ищете какую-либо форму триггеров, вам придется свернуть свои собственные.Если вы ищете хранимые процедуры, это действительно не так.