MongoCollection::find

(PECL mongo >=0.9.0)

MongoCollection::findConsulta esta colección, devolviendo un objeto MongoCursor para el conjunto de resultados

Descripción

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

Parámetros

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.

Advertencia

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.

Valores devueltos

Devuelve un cursor para los resultados de la búsqueda.

Ejemplos

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).

Ver también