MongoDB::command
(PECL mongo >=0.9.2)
MongoDB::command — Exécute une commande de base de données
Description
$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
- MongoCollection::aggregate() - Effectue une agrégation en utilisant le framework dédié
- MongoCollection::findAndModify() - Met à jour un document et le retourne
- MongoCollection::group() - Effecture une opération de regroupement
La documentation principale MongoDB sur les » commandes de base de données. Aussi, quelques commandes individuelles : » findAndModify, » getLastError, et » repair.