Docs Menu
Docs Home
/ /

Especifica un query

En esta guía, puede aprender cómo especificar una consulta utilizando la biblioteca PHP MongoDB.

Puede refinar el conjunto de documentos que devuelve una consulta creando un filtro de consulta. Un filtro de consulta es una expresión que especifica los criterios de búsqueda que MongoDB utiliza para encontrar documentos en una operación de lectura o escritura. En un filtro de consulta, puede solicitar al controlador que busque documentos que coincidan exactamente con su consulta o crear filtros de consulta para expresar criterios de coincidencia más complejos.

Tip

Operaciones con Constructores

Puedes usar un patrón de generador para crear filtros que puedas usar en tus consultas. Para obtener más información, consulta Guía deoperaciones con constructores.

Los ejemplos de esta guía ejecutan operaciones en el fruits Colección que contiene documentos que representan frutas. El siguiente ejemplo de código muestra cómo crear una base de datos y una colección, y luego insertar los documentos de muestra en la colección:

$uri = '<connection string>';
$client = new Client($uri);
$collection = $client->db->fruits;
// Inserts documents representing fruits
$fruits = [
[
'_id' => 1,
'name' => 'apples',
'qty' => 5,
'rating' => 3,
'color' => 'red',
'type' => ['fuji', 'honeycrisp'],
],
[
'_id' => 2,
'name' => 'bananas',
'qty' => 7,
'rating' => 4,
'color' => 'yellow',
'type' => ['cavendish'],
],
[
'_id' => 3,
'name' => 'oranges',
'qty' => 6,
'rating' => 2,
'type' => ['naval', 'mandarin'],
],
[
'_id' => 4,
'name' => 'pineapples',
'qty' => 3,
'rating' => 5,
'color' => 'yellow',
],
];
$result = $collection->insertMany($fruits);

Las consultas de valor literal devuelven documentos que coinciden exactamente con su filtro de consulta.

El siguiente ejemplo especifica un filtro de consulta como parámetro del método MongoDB\Collection::find(). El código devuelve todos los documentos cuyo valor del campo color es 'yellow':

$cursor = $collection->find(['color' => 'yellow']);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":2,"name":"bananas","qty":7,"rating":4,"color":"yellow","type":["cavendish"]}
{"_id":4,"name":"pineapples","qty":3,"rating":5,"color":"yellow"}

Tip

Encuentre todos los documentos

Para encontrar todos los documentos de una colección, llame al método find() y pásele un filtro de consulta vacío. El siguiente ejemplo busca todos los documentos de una colección:

$cursor = $collection->find([]);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}

Los operadores de comparación evalúan el valor de un campo de documento con respecto a un valor especificado en el filtro de consulta. La siguiente lista define operadores de comparación comunes:

  • $gt: Mayor que

  • $lte:Menor o igual que

  • $ne:No es igual

Para ver una lista completa de operadores de comparación, consulte la Guía de operadores de consultade comparación en el manual del servidor MongoDB.

El siguiente ejemplo especifica un operador de comparación en un filtro de query como un parámetro para el método MongoDB\Collection::find(). El código devuelve todos los documentos en los que el valor del campo rating es mayor que 2:

$cursor = $collection->find(['rating' => ['$gt' => 2]]);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":1,"name":"apples","qty":5,"rating":3,"color":"red","type":["fuji","honeycrisp"]}
{"_id":2,"name":"bananas","qty":7,"rating":4,"color":"yellow","type":["cavendish"]}
{"_id":4,"name":"pineapples","qty":3,"rating":5,"color":"yellow"}

Los operadores lógicos vinculan documentos mediante la lógica aplicada a los resultados de dos o más conjuntos de expresiones. La siguiente lista describe cada operador lógico:

  • $and: Devuelve todos los documentos que coinciden con las condiciones de todas las cláusulas

  • $or: Devuelve todos los documentos que coinciden con las condiciones de una cláusula

  • $nor:Devuelve todos los documentos que no coinciden con las condiciones de ninguna cláusula

  • $not: Devuelve todos los documentos que no coinciden con la expresión

Para obtener más información sobre los operadores lógicos, consulte la guía Operadores de consulta lógica en el manual del servidor MongoDB.

El siguiente ejemplo especifica un operador lógico en un filtro de consulta como parámetro del MongoDB\Collection::find() método. El código devuelve todos los documentos cuyo qty valor del campo sea mayor que 5 o cuyo color valor del campo 'yellow' sea:

$cursor = $collection->find([
'$or' => [
['qty' => ['$gt' => 5]],
['color' => 'yellow'],
],
]);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":2,"name":"bananas","qty":7,"rating":4,"color":"yellow","type":["cavendish"]}
{"_id":3,"name":"oranges","qty":6,"rating":2,"type":["naval","mandarin"]}
{"_id":4,"name":"pineapples","qty":3,"rating":5,"color":"yellow"}

Los operadores de matriz buscan coincidencias de documentos según el valor o la cantidad de elementos en un campo de matriz. La siguiente lista describe los operadores de matriz disponibles:

  • $all: Devuelve documentos con matrices que contienen todos los elementos de la consulta

  • $elemMatch: Devuelve documentos si un elemento en su campo de matriz coincide con todas las condiciones de la consulta

  • $size: Devuelve todos los documentos con matrices de un tamaño especificado

Para obtener más información sobre los operadores de matriz, consulte la guía Operadores de consulta de matriz en el manual del servidor MongoDB.

El siguiente ejemplo especifica un operador de matriz en un filtro de consulta como parámetro del método MongoDB\Collection::find(). El código devuelve todos los documentos en los que el campo de matriz type contiene 2 elementos:

$cursor = $collection->find(['type' => ['$size' => 2]]);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":1,"name":"apples","qty":5,"rating":3,"color":"red","type":["fuji","honeycrisp"]}
{"_id":3,"name":"oranges","qty":6,"rating":2,"type":["naval","mandarin"]}

Los operadores de elementos consultan datos según la presencia o el tipo de un campo.

Para obtener más información sobre los operadores de elementos, consulte la guía Operadores de consulta de elementos en el manual de MongoDB Server.

El siguiente ejemplo especifica un operador de elemento en un filtro de consulta como parámetro del método MongoDB\Collection::find(). El código devuelve todos los documentos que tienen un campo color:

$cursor = $collection->find(['color' => ['$exists' => true]]);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":1,"name":"apples","qty":5,"rating":3,"color":"red","type":["fuji","honeycrisp"]}
{"_id":2,"name":"bananas","qty":7,"rating":4,"color":"yellow","type":["cavendish"]}
{"_id":4,"name":"pineapples","qty":3,"rating":5,"color":"yellow"}

Los operadores de evaluación devuelven datos basados ​​en evaluaciones de campos individuales o de los documentos de toda la colección.

La siguiente lista describe operadores de evaluación comunes:

  • $text:Realiza una búsqueda de texto en los documentos

  • $regex: Devuelve documentos que coinciden con una expresión regular especificada

  • $mod: Realiza una operación de módulo sobre el valor de un campo y devuelve documentos donde el resto es un valor especificado

Para ver una lista completa de operadores de evaluación, consulte la guía Operadores de consulta de evaluación en el manual de MongoDB Server.

El siguiente ejemplo especifica un operador de evaluación en un filtro de consulta como parámetro del método MongoDB\Collection::find(). El código utiliza una expresión regular para devolver todos los documentos cuyo valor del campo name tenga al menos dos caracteres 'p' consecutivos:

$cursor = $collection->find(['name' => ['$regex' => 'p{2,}']]);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":1,"name":"apples","qty":5,"rating":3,"color":"red","type":["fuji","honeycrisp"]}
{"_id":4,"name":"pineapples","qty":3,"rating":5,"color":"yellow"}

Para obtener más información sobre cómo consultar documentos, consulte la guía Consultar documentos en el manual de MongoDB Server.

Para obtener más información sobre cómo recuperar documentos con la biblioteca PHP MongoDB, consulte la guía Recuperar datos.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Especifique los campos a devolver

En esta página