(PECL mongo >=0.9.0)
MongoCollection::find — Consulta esta colección, devolviendo un objeto MongoCursor para el conjunto de resultados
query
Los campos en los que buscar. El lenguaje de consultas de MongoDB es bastante extenso. El controlador de PHP, en la mayoría de los casos, pasará la consulta directamente al servidor, por lo que es una buena idea leer el manual de MongoDB sobre » find.
Asegúrese de que en todos los operadores de consulta especiales (los que empiezan con $) se usen comillas simples, ya que así PHP no intentará reemplazar "$exists" con el valor de la variable $exists.
fields
Campos del resultado que se devolverán. El array está en el formato array('nombrecampo' => true, 'nombrecampo2' => true). El campo _id se devuelve siempre.
Devuelve un cursor para los resultados de la búsqueda.
Ejemplo #1 Ejemplo de MongoCollection::find()
Este ejemplo demuestra las opciones de búsqueda básica.
<?php
$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'produce');
// buscar frutas
$fruitQuery = array('Type' => 'Fruit');
$cursor = $collection->find($fruitQuery);
foreach ($cursor as $doc) {
var_dump($doc);
}
// buscar los que son dulces. Taste es un hijo de Details.
$sweetQuery = array('Details.Taste' => 'Sweet');
echo "Sweet\n";
$cursor = $collection->find($sweetQuery);
foreach ($cursor as $doc) {
var_dump($doc);
}
?>
El resultado del ejemplo sería:
array(4) { ["_id"]=> object(MongoId)#7 (1) { ["$id"]=> string(24) "50a87dd084f045a19b220dd6" } ["Name"]=> string(5) "Apple" ["Type"]=> string(5) "Fruit" ["Details"]=> array(2) { ["Taste"]=> string(5) "Sweet" ["Colour"]=> string(3) "Red" } } array(4) { ["_id"]=> object(MongoId)#8 (1) { ["$id"]=> string(24) "50a87de084f045a19b220dd7" } ["Name"]=> string(5) "Lemon" ["Type"]=> string(5) "Fruit" ["Details"]=> array(2) { ["Taste"]=> string(4) "Sour" ["Colour"]=> string(5) "Green" } } Sweet: array(4) { ["_id"]=> object(MongoId)#7 (1) { ["$id"]=> string(24) "50a87dd084f045a19b220dd6" } ["Name"]=> string(5) "Apple" ["Type"]=> string(5) "Fruit" ["Details"]=> array(2) { ["Taste"]=> string(5) "Sweet" ["Colour"]=> string(3) "Red" } }
Véase MongoCursor para más información sobre cómo trabajar con cursores.
Ejemplo #2 Ejemplo de MongoCollection::find()
Este ejemplo muestra como buscar en un rango.
<?php
$m = new MongoClient();
$db = $m->selectDB('test');
$colección = new MongoCollection($db, 'phpmanual');
// buscar documentos donde 5 < x < 20
$rangeQuery = array('x' => array( '$gt' => 5, '$lt' => 20 ));
$cursor = $colección->find($rangeQuery);
foreach ($cursor as $doc) {
var_dump($doc);
}
?>
El resultado del ejemplo sería:
array(2) { ["_id"]=> object(MongoId)#10 (1) { ["$id"]=> string(24) "4ebc3e3710b89f2349000000" } ["x"]=> int(12) } array(2) { ["_id"]=> object(MongoId)#11 (1) { ["$id"]=> string(24) "4ebc3e3710b89f2349000001" } ["x"]=> int(12) }
Véase MongoCursor para más información sobre cómo trabajar con cursores.
Ejemplo #3 Ejemplo de MongoCollection::find() usando $where
Este ejemplo demuestra cómo buscar en una colección usando código javascript para reducir el conjunto de resultados.
<?php
$m = new MongoClient();
$db = $m->selectDB('test');
$colección = new MongoCollection($db, 'phpmanual');
$js = "function() {
return this.name == 'Joe' || this.age == 50;
}";
$cursor = $colección->find(array('$where' => $js));
foreach ($cursor as $doc) {
var_dump($doc);
}
?>
El resultado del ejemplo sería:
array(3) { ["_id"]=> object(MongoId)#7 (1) { ["$id"]=> string(24) "4ebc3e3710b89f2349000002" } ["name"]=> string(3) "Joe" ["age"]=> int(20) }
Ejemplo #4 Ejemplo de MongoCollection::find() usando $in
Este ejemplo demuestra cómo buscar una colección usando el operador $in.
<?php
$m = new MongoClient();
$db = $m->selectDB('test');
$colección = new MongoCollection($db, 'phpmanual');
$cursor = $colección->find(array(
'name' => array('$in' => array('Joe', 'Wendy'))
));
?>
El resultado del ejemplo sería:
array(3) { ["_id"]=> object(MongoId)#7 (1) { ["$id"]=> string(24) "4ebc3e3710b89f2349000002" } ["name"]=> string(3) "Joe" ["age"]=> int(20) }
Ejemplo #5 Obtener resultados en forma de array
Devuelve un MongoCursor. A menudo, los principiantes se sienten más cómodos usando arrays. Para convertir un cursor en un array, utilice la función iterator_to_array().
<?php
$m = new MongoClient();
$db = $m->selectDB('test');
$colección = new MongoCollection($db, 'phpmanual');
$cursor = $colección->find();
$array = iterator_to_array($cursor);
?>
El resultado del ejemplo sería:
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) } }
Al usar iterator_to_array() se fuerza a que el controlador cargue todos los resultados en memoria. ¡No lo use cuando el resultado supere el tamaño máximo de memoria!
Además, algunas colecciones del sistema no tienen un campo _id.
Si se trabaja con colecciones que pudieran tener documentos
sin _ids, establezca FALSE
el segundo argumento de
iterator_to_array() (así, no tratará de usar como clave el
valor del campo _id inexistente).