Rechercher une fonction PHP

MongoDB::command

(PECL mongo >=0.9.2)

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

Description

public MongoDB::command ( array $command [, array $options = array() [, string &$hash ]] ) : 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);
}

?>

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

command

La requête à envoyer.

options

Un tableau d'options pour la création de l'index. Actuellement, les options disponibles sont :

  • "socketTimeoutMS"

    Cette option spécifie la durée limite, en millisecondes, pour la communication avec un socket. Si le serveur ne répond pas pendant cette période, une exception MongoCursorTimeoutException sera émise et il n'y a aucune façon de déterminer si le serveur gère actuellement l'écriture ou non. Une valeur de -1 peut être spécifiée pour bloquer indéfiniement. La valeur par défaut pour MongoClient est 30000 (30 secondes).

Les options suivantes sont obsolètes et ne doivent plus être utilisées :

  • "timeout"

    Alias obsolète pour "socketTimeoutMS".

hash

Défini le hash de connexion du serveur qui a exécuté la commande. Lorsque le résultat de la commande permet de créer un MongoCommandCursor, le hash est prévu pour être passé à la méthode MongoCommandCursor::createFromDocument().

Le hash peut aussi correspondre à une connexion retournée depuis MongoClient::getConnections().

Retour à la première page de Manuel PHP  Table des matières Haut

Historique

Version Description
1.5.0

Renommage de l'option "timeout" en "socketTimeoutMS". Emets une alerte de type E_DEPRECATED lorsque "timeout" est utilisée.

Ajout du paramètre hash par référence.

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

Retour à la première page de Manuel PHP  Table des matières Haut

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.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

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

Trouver tous les valeurs distinctes pour une clé.

<?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";
}

?>

L'exemple ci-dessus va afficher quelque chose de similaire à :


4
22
87

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

Récupère toutes les valeurs distinctes pour une clé, pour laquelle la valeur est supérieure ou égale à 18.

<?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";
}

?>

L'exemple ci-dessus va afficher quelque chose de similaire à :


22
87

Exemple #3 Exemple avec MongoDB::command() et MapReduce

Récupérer tous les utilisateurs avec au moins un événement "sale", et savoir le nombre de fois chacun de ces utilisateurs ont eu une vente.

<?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";
}

?>

L'exemple ci-dessus va afficher quelque chose de similaire à :


User 47cc67093475061e3d9536d2 had 3 sale(s).
User 49902cde5162504500b45c2c had 14 sale(s).
User 4af467e4fd543cce7b0ea8e2 had 1 sale(s).

Note: Utilisation de MongoCode

Cet exemple utilise la méthode MongoCode, qui prend également comme argument le scope. Cependant, actuellement, Mongo ne supporte pas l'utilisation d'un scope dans MapReduce. Si vous voulez utiliser des variables définies côté client dans les fonctions MapReduce, vous pouvez les ajouter au scope global en utilisant le champ optionnel scope avec la commande de la base de données. Voir la » documentation de MapReduce pour plus d'informations.

Note: L'argument out

Avant la version 1.8.0, l'argument out était optionnel. Si vous ne l'utilisiez pas, les résultats de MapReduce étaient écrits dans une collection temporaire, qui était supprimée lors de la fermeture de la collection. En version 1.8.0+, l'argument out est obligatoire. Reportez-vous à la » documentation sur MapReduce pour plus d'informations.

Exemple #4 Exemple avec la commande MongoDB::command() "geoNear"

Cet exemple montre l'utilisation de la commande geoNear.

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

$r $d->command(array(
    
'geoNear' => "poiConcat",      // Recherche dans la collection poiConcat
    
'near' => array(-0.0851.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);
?>

Retour à la première page de Manuel PHP  Table des matières Haut

Voir aussi

La documentation principale MongoDB sur les » commandes de base de données.

Rechercher une fonction PHP

Version en cache

22/11/2024 05:13:50 Cette version de la page est en cache (à la date du 22/11/2024 05:13:50) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mongodb.command.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut