MongoCollection::find

(PECL mongo >=0.9.0)

MongoCollection::findInterroge une collection, et retourne comme jeu de résultats un objet MongoCursor

Description

public MongoCursor MongoCollection::find ([ array $query = array() [, array $fields = array() ]] )

Liste de paramètres

query

Le champ dans lequel la recherche va s'effectuer. Le langage de requête Mongo est assez extensible. Le driver PHP passera dans la plupart des cas la requête au serveur, aussi, la lecture de la documentation coeur de MongoDB sur la fonctionnalité » find pourrait être une bonne idée.

Avertissement

Assurez-vous que pour tous les opérateurs spéciaux de la requête (commençant par $) vous utilisez des guillemets simples, et ainsi, PHP ne tentera pas de remplacer "$exists" avec la valeur de la variable $exists.

fields

Les champs qui devront être retournés dans le résultat. Le tableau est au format array('fieldname' => true, 'fieldname2' => true). Le champ _id sera, quant à lui, toujours retourné.

Valeurs de retour

Retourne un curseur pour les résultats de recherche.

Exemples

Exemple #1 Exemple avec MongoCollection::find()

<?php

$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'produce');

// recherche des fruits
$fruitQuery = array('Type' => 'Fruit');

$cursor = $collection->find($fruitQuery);
foreach ($cursor as $doc) {
	var_dump($doc);
}

// recherche des produits sucrés. Le goût est un enfant de "Details"
$sweetQuery = array('Details.Taste' => 'Sweet');
echo "Sucré \n";
$cursor = $collection->find($sweetQuery);
foreach ($cursor as $doc) {
	var_dump($doc);
}

?>
<?php

$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'phpmanual');

// recherche les documents dont l'identifiant est entre 5 < x < 20
$rangeQuery = array('x' => array( '$gt' => 5, '$lt' => 20 ));

$cursor = $collection->find($rangeQuery);
foreach ($cursor as $doc) {
	var_dump($doc);
}

?>
<?php

$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'phpmanual');

$js = "function() {
	return this.name == 'Joe' || this.age == 50;
}";
$cursor = $collection->find(array('$where' => $js));
foreach ($cursor as $doc) {
	var_dump($doc);
}

?>
<?php

$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'phpmanual');

$cursor = $collection->find(array(
	'name' => array('$in' => array('Joe', 'Wendy'))
));

?>
<?php

$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'phpmanual');

$cursor = $collection->find();
$array = iterator_to_array($cursor);

?>

L'exemple ci-dessus va afficher :

array(3) {
  ["4ebc40af10b89f5149000000"]=>
  array(2) {
    ["_id"]=>
    object(MongoId)#6 (1) {
      ["$id"]=>
      string(24) "4ebc40af10b89f5149000000"
    }
    ["x"]=>
    int(12)
  }
  ["4ebc40af10b89f5149000001"]=>
  array(2) {
    ["_id"]=>
    object(MongoId)#11 (1) {
      ["$id"]=>
      string(24) "4ebc40af10b89f5149000001"
    }
    ["x"]=>
    int(12)
  }
  ["4ebc40af10b89f5149000002"]=>
  array(3) {
    ["_id"]=>
    object(MongoId)#12 (1) {
      ["$id"]=>
      string(24) "4ebc40af10b89f5149000002"
    }
    ["name"]=>
    string(3) "Joe"
    ["age"]=>
    int(20)
  }
}

L'utilisation de la fonction iterator_to_array() force le driver à charger tous les résultats en mémoire, aussi, évitez d'utiliser cette fonction sur des jeux de résultats qui peuvent être plus grands que la mémoire disponible!

Aussi, certaines collections n'ont pas de champ _id. Si vous manipulez des collections ne possédans pas de champ _id, passez FALSE au second paramètre de iterator_to_array() (il n'essayera pas d'utiliser les valeurs innexistantes de _id comme clés).

Voir aussi

LoadingChargement en cours