Описание
public MongoDB::execute
(
mixed $code
[,
array $args
= array()
] ) :
array
Внимание
Команда » eval,
которую вызывает этот метод, не рекомендуется в MongoDB 3.0+.
Сервер базы данных Mongo работает на движке JavaScript. Этот метод позволяет
запускать произвольный JavaScript в базе данных. Это может быть полезно, если вы хотите
слегка коснуться нескольких коллекций или обработать некоторые результаты на стороне
базы данных, чтобы уменьшить объем, который должен быть отправлен клиенту.
Запуск JavaScript в базе данных требует блокировки записи, то есть блокирует
другие операции. Обязательно подумайте об этом, прежде чем запускать длинный скрипт.
Это оболочка для команды базы данных
» eval.
Этот метод в основном:
<?php
public function execute($code, $args) {
return $this->command(array('eval' => $code, 'args' => $args));
}
?>
MongoDB подразумевает оператор возврата, если у вас есть один оператор в одной
строке. Это может вызвать некоторое неинтуитивное поведение. Например, это возвращает
"foo":
<?php
$db->execute('"foo";');
?>
Тем не менее, это вернет NULL
:
<?php
$db->execute('"bar"; "foo";'); // более одного оператора
$db->execute('db.foo.count(
);'); // более одной строки
?>
Чтобы избежать неожиданного поведения, лучше не полагаться на MongoDB, чтобы решить,
что возвращать, а явно указать возвращаемое значение. В приведенных выше примерах
мы можем изменить их на:
<?php
$db->execute('"bar"; return "foo";');
$db->execute('return db.foo.count(
);');
?>
Теперь первый оператор вернет "foo", а второй оператор вернет
счетчик коллекции "foo".