©
This document uses PHP Chinese website manual Release
(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.
readPreference
( MongoDB\Driver\ReadPreference )Optionally, a MongoDB\Driver\ReadPreference to select the server for this operation. If none is given, the read preference from the MongoDB Connection URI will be used.
Returns MongoDB\Driver\Cursor on success.
Example #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;
}
$response = $cursor -> toArray ()[ 0 ];
var_dump ( $response );
?>
以上例程会输出:
array(1) { ["ok"]=> float(1) }
Example #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 );
foreach ( $cursor as $document ) {
var_dump ( $document );
}
?>
以上例程会输出:
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
command
document itself.If a secondary
readPreference
is used, it is the caller's responsibility to ensure that thecommand
can be executed on a secondary. No validation is done by the driver.