Как создать хранимую функцию в MongoDB с помощью драйвера PHP - PullRequest
0 голосов
/ 24 марта 2012

Я пытаюсь принять проектное решение.

Я не очень хорошо знаком ни с MongoDB, ни с его драйвером PHP, но меня заинтриговал синтаксис JavaScript хранимых функций, которые использует mongodb.

Можете ли вы сказать мне, есть ли способ создания хранимых функций MongoDB с использованием PHP?

Моя справка по созданию хранимых функций mongodb: https://github.com/mongodb/mongo/blob/master/jstests/storefunc.js

1 Ответ

2 голосов
/ 24 марта 2012

Похоже, вы ссылаетесь на функции на стороне сервера .

Создать / обновить функцию на стороне сервера так же просто, как обновить коллекцию system.js:

db.system.js.save( { _id : "foo" , value : function( x , y ){ return x + y; } } );

Проблема здесь действительно заключается в «использовании» серверных функций.Сначала вы должны написать какие-то неуклюжие операторы обновления / вставки.Во-вторых, это не хранимые процедуры.Они не скомпилированы для скорости с целью запуска их на сервере.

Если вы используете серверную функцию для запросов, она не будет использовать индексы для чего-либо внутри этой функции.Кроме того, он будет использовать функцию eval под капотом, которая может заблокировать вашу БД.

Кроме того, нет триггеров, поэтому вы не можете использовать их и для триггеров.

В целом, для серверных функций не так уж много пользы, поэтому, вероятно, они получают 3 абзаца в документах.

Если вам нужны расширенные функции запросов, взгляните на новую структуру агрегации.Если вы ищете какую-либо форму триггеров, вам придется свернуть свои собственные.Если вы ищете хранимые процедуры, это действительно не так.

...