MongoDB::command

(PECL mongo >=0.9.2)

MongoDB::commandExécute une commande de base de données

Description

public array MongoDB::command ( array $command [, array $options = array() ] )

Tout ce qui n'est pas une opération CRUD peut être effectué avec une commande de base de données. Besoin de connaitre la version de la base de données ? Il y a une commande pour cela. Besoin de faire une agrégation ? Il y a une commande pour cela. Besoin d'activer l'historisation ? Vous voyez l'idée ?

Cette méthode est équivalente à :

<?php

public function command($data) {
	return $this->selectCollection('$cmd')->findOne($data);
}

?>

Liste de paramètres

command

La requête à envoyer.

options

Ce paramètre est un tableau associatif sous la forme array("optionname" => <boolean>, ...). Actuellement, les options supportées sont :

  • "timeout"

    Entier, par défaut, vaut MongoCursor::$timeout. Si la reconnaissance des écritures est utilisée, ceci va définir (en millisecondes) la durée d'attente du client d'une réponse de la base de données. Si la base de données ne répond pas durant cette période, une exception de type MongoCursorTimeoutException sera émise.

Historique

Version Description
1.2.0 Ajout du paramètre options avec une seule option : "timeout".

Valeurs de retour

Retourne la réponse de la base de données. Toutes les réponses de la base de données sont composées d'au maximum un document, ce qui signifie que le résultat d'une commande de base de données ne peut jamais excéder les 16 Mo. La structure du document résultat dépend de la commande utilisée, mais la plupart des résultats auront le champ ok pour indiquer le succès ou l'échec de l'opération, et le champ results contenant un tableau de chaque document résultant.

Exemples

Exemple #1 Exemple avec MongoDB::command() et "distinct"

<?php

$people = $db->people;

$people->insert(array("name" => "Joe", "age" => 4));
$people->insert(array("name" => "Sally", "age" => 22));
$people->insert(array("name" => "Dave", "age" => 22));
$people->insert(array("name" => "Molly", "age" => 87));

$ages = $db->command(array("distinct" => "people", "key" => "age"));

foreach ($ages['values'] as $age) {
	echo "$age\n";
}

?>
<?php

$people = $db->people;

$people->insert(array("name" => "Joe", "age" => 4));
$people->insert(array("name" => "Sally", "age" => 22));
$people->insert(array("name" => "Dave", "age" => 22));
$people->insert(array("name" => "Molly", "age" => 87));

$ages = $db->command(
	array(
		"distinct" => "people",
		"key" => "age",
		"query" => array("age" => array('$gte' => 18))
	)
);  

foreach ($ages['values'] as $age) {
	echo "$age\n";
}

?>
<?php

// Document d'événement simple
$events->insert(array("user_id" => $id,
	"type" => $type,
	"time" => new MongoDate(),
	"desc" => $description));

// Construit les fonctions map et reduce
$map = new MongoCode("function() { emit(this.user_id,1); }");
$reduce = new MongoCode("function(k, vals) { ".
	"var sum = 0;".
	"for (var i in vals) {".
		"sum += vals[i];".
	"}".
	"return sum; }");

$sales = $db->command(array(
	"mapreduce" => "events",
	"map" => $map,
	"reduce" => $reduce,
	"query" => array("type" => "sale"),
	"out" => array("merge" => "eventCounts")));

$users = $db->selectCollection($sales['result'])->find();

foreach ($users as $user) {
	echo "{$user['_id']} had {$user['value']} sale(s).\n";
}

?>
<?php
$m = new MongoClient();
$d = $m->demo;
$c = $d->planets;

$c->insert(array("name" => "Mercury", "desc" => "Mercury is the smallest and closest to the Sun"));
$c->insert(array("name" => "Venus", "desc" => "Venus is the second planet from the Sun, orbiting it every 224.7 Earth days."));
$c->insert(array("name" => "Earth", "desc" => "Earth is the the densest of the eight planets in the Solar System."));
$c->insert(array("name" => "Mars", "desc" => "Mars is named after the Roman god of war."));

$c->ensureIndex(array('desc' => 'text'));

$r = $d->command(array("text" => "planets", 'search' => "sun" ));
print_r($r);
?>
<?php
$m = new MongoClient();
$d = $m->demo;
$c = $d->poiConcat;

$r = $d->command(array(
	'geoNear' => "poiConcat",	  // Recherche dans la collection poiConcat
	'near' => array(-0.08, 51.48), // Recherche à proximité de 51.48°N, 0.08°E
	'spherical' => true,		   // Active la recherche sphérique
	'num' => 5,					// Retourne au maximum 5 documents
));
print_r($r);
?>

Voir aussi

La documentation principale MongoDB sur les » commandes de base de données. Aussi, quelques commandes individuelles : » findAndModify, » getLastError, et » repair.

LoadingChargement en cours