MongoCollection
PHP Manual

MongoCollection::find

(PECL mongo >=0.9.0)

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

Descripción

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

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 (comenzando con $) se use 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. E array está en el formato array('nombrecampo' => true, 'nombrecampo2' => true). El campo _id se devuelve siempre.

Valores devueltos

Devuelve un cursor para el resultado de la búsqueda.

Ejemplos

Ejemplo #1 MongoCollection::find() example

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

See MongoCursor for more information how to work with cursors.

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

Revise 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 Obteniendo resultados en forma de array

Devuelve un MongoCursor. A menudo, la gente que empiza, se siente más cómoda 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 driver 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 está trabajando con colecciones que pudieran tener documentos sin _ids, establezca FALSE en el segundo argumento de iterator_to_array() (así, no tratará de usar como clave el valor del campo _id inexistente).

Ver también


MongoCollection
PHP Manual