MongoDB::executeRuns JavaScript code on the database server [deprecated]
&reftitle.description;
publicarrayMongoDB::executemixedcodearrayargsarray()
The eval command,
which this method invokes, is deprecated in MongoDB 3.0+.
The Mongo database server runs a JavaScript engine. This method allows you
to run arbitary JavaScript on the database. This can be useful if you want
touch a number of collections lightly, or process some results on the
database side to reduce the amount that has to be sent to the client.
Running JavaScript in the database takes a write lock, meaning it blocks
other operations. Make sure you consider this before running a long script.
This is a wrapper for the
eval database
command. This method is basically:
command(array('eval' => $code, 'args' => $args));
}
?>
]]>
MongoDB implies a return statement if you have a single statement on a single
line. This can cause some unintuitive behavior. For example, this returns
"foo":
execute('"foo";');
?>
]]>
However, these return &null;:
execute('"bar"; "foo";'); // more than one statement
$db->execute('db.foo.count(
);'); // more than one line
?>
]]>
To avoid surprising behavior, it is best not to depend on MongoDB to decide
what to return, but to explicitly state a return value. In the examples
above, we can change them to:
execute('"bar"; return "foo";');
$db->execute('return db.foo.count(
);');
?>
]]>
Now the first statement will return "foo" and the second statement will
return a count of the "foo" collection.
&reftitle.parameters;
codeMongoCode or string to execute.
args
Arguments to be passed to code.
&reftitle.returnvalues;
Returns the result of the evaluation.
&reftitle.examples;
Simple MongoDB::execute example
execute("function() { return 'Hello, world!'; }");
echo $response['retval'];
?>
]]>
&example.outputs.similar;
Hello, world!
Parameter MongoDB::execute example
The optional array of parameters will be passed to the JavaScript function.
execute("function(greeting, name) { return greeting+', '+name+'!'; }", array("Good bye", "Joe"));
echo $response['retval'];
?>
]]>
&example.outputs.similar;
Good bye, Joe!
Scope example
If a MongoCode object is used instead of a string for
the first parameter, a scope can be passed in which the JavaScript will be
executed.
"Fred");
$code = new MongoCode($func, $scope);
$response = $db->execute($code, array("Goodbye", "Joe"));
echo $response['retval'];
?>
]]>
&example.outputs.similar;
Goodbye, Joe, says Fred
&reftitle.seealso;
The MongoDB eval command docs
&reftitle.changelog;
&Version;&Description;1.7.0
This method has been deprecated as a result of the underlaying
eval command
being deprecated in MongoDB 3.0+.