(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeCommand — Execute a database command
$db
, MongoDB\Driver\Command $command
[, MongoDB\Driver\ReadPreference $readPreference
] )
Executes command on a server If
readPreference is provided, it will be used for server
selection; otherwise, the default read preference will be used.
db (string)The name of the database on which to execute the command.
command (MongoDB\Driver\Command)The MongoDB\Driver\Command to execute.
readPreferenceOptionnellement, une MongoDB\Driver\ReadPreference vers laquelle la commande sera routée. Si rien n'est fourni, ce sera les préférences de lecture définies par l' URI de connexion MongoDB.
Returns MongoDB\Driver\Cursor on success.
Exemple #1 MongoDB\Driver\Manager::executeCommand() with a command returning a single result document
<?php
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$command = new MongoDB\Driver\Command(['ping' => 1]);
try {
$cursor = $manager->executeCommand('admin', $command);
} catch(MongoDB\Driver\Exception $e) {
echo $e->getMessage(), "\n";
exit;
}
/* The ping command returns a single result document, so we need to access the
* first result in the cursor. */
$response = $cursor->toArray()[0];
var_dump($response);
?>
L'exemple ci-dessus va afficher :
array(1) {
["ok"]=>
float(1)
}
Exemple #2 MongoDB\Driver\Manager::executeCommand() with a command returning a cursor
<?php
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1, 'y' => 'foo']);
$bulk->insert(['x' => 2, 'y' => 'bar']);
$bulk->insert(['x' => 3, 'y' => 'bar']);
$manager->executeBulkWrite('db.collection', $bulk);
$command = new MongoDB\Driver\Command([
'aggregate' => 'collection',
'pipeline' => [
['$group' => ['_id' => '$y', 'sum' => ['$sum' => '$x']]],
],
'cursor' => new stdClass,
]);
$cursor = $manager->executeCommand('db', $command);
/* The aggregate command can optionally return its results in a cursor instead
* of a single result document. In this case, we can iterate on the cursor
* directly to access those results. */
foreach ($cursor as $document) {
var_dump($document);
}
?>
L'exemple ci-dessus va afficher :
object(stdClass)#6 (2) {
["_id"]=>
string(3) "bar"
["sum"]=>
int(10)
}
object(stdClass)#7 (2) {
["_id"]=>
string(3) "foo"
["sum"]=>
int(2)
}
Note:
This method does not take a MongoDB\Driver\WriteConcern parameter. For write commands (e.g. » findAndModify in MongoDB 3.2+), the write concern should be included in the
commanddocument itself.If a secondary
readPreferenceis used, it is the caller's responsibility to ensure that thecommandcan be executed on a secondary. No validation is done by the driver.