MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::executeCommand

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeCommandExecute a database command

Descripción

final public MongoDB\Driver\Cursor MongoDB\Driver\Manager::executeCommand ( string $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.

Parámetros

db (string)

El nombre de la base de datos en la que ejecutar el comando.

command (MongoDB\Driver\Command)

El MongoDB\Driver\Command a ejecutar.

readPreference (MongoDB\Driver\ReadPreference)

Opcionalmente, un MongoDB\Driver\ReadPreference para seleccionar el servidor para esta operación. Si no se proporciona, se usará la preferencia de lectura del URI de conexión de MongoDB.

Valores devueltos

Devuelve un MongoDB\Driver\Cursor en caso de éxito.

Errores/Excepciones

Ejemplos

Ejemplo #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);

?>

El resultado del ejemplo sería:

array(1) {
  ["ok"]=>
  float(1)
}

Ejemplo #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);
}

?>

El resultado del ejemplo sería:

object(stdClass)#6 (2) {
  ["_id"]=>
  string(3) "bar"
  ["sum"]=>
  int(10)
}
object(stdClass)#7 (2) {
  ["_id"]=>
  string(3) "foo"
  ["sum"]=>
  int(2)
}

Notas

Nota:

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 the command can be executed on a secondary. No validation is done by the driver.

Ver también


MongoDB\Driver\Manager
PHP Manual