(mongodb >=1.0.0)
MongoDB\Driver\Query::__construct — Créer une nouvelle requête
Construit un nouvel objet MongoDB\Driver\Query, qui est un objet de valeur immuable qui représente une requête de base de données. La requête peut ensuite être exécutée avec MongoDB\Driver\Manager::executeQuery().
filter (array|object)Note: Lors de l'évaluation des critères de requête, MongoDB compare les type et les valeurs en fonction de leur propre » règles de comparaison pour les types BSON, qui diffère des règles de comparaison et de manipulation des type de PHP. Lors de la correspondance d'un type BSON spcécial, les critères de requête doivent utiliser la classe BSON (ex. : utiliser MongoDB\BSON\ObjectId pour correspondre à un » ObjectId).
queryOptions
| Option | Type | Description |
|---|---|---|
| allowDiskUse | bool | Autorise MongoDB à utiliser des fichiers temporaires sur le disque pour stocker des données dépassant la limite de mémoire système de 100 mégaoctets lors du traitement d'une opération de tri bloquante. |
| allowPartialResults | bool |
Pour les requêtes sur une collection fragmentée, retourne des
résultats partiels du mongos si certains fragments ne sont pas
disponibles au lieu de générer une erreur.
Retombe sur l'option dépréciée "partial" si non
spécifiée.
|
| awaitData | bool |
Utiliser en conjonction avec l'option "tailable" pour
bloquer temporairement une opération getMore sur le curseur si à la fin
des données plutôt que de ne pas retourner de données. Après une période
d'attente, la requête se termine normalement.
|
| batchSize | int | Le nombre de documents à retourner dans le premier lot. Par défaut à 101. Une taille de lot de 0 signifie que le curseur sera établi, mais aucun document ne sera retourné dans le premier lot. Dans les versions de MongoDB antérieures à 3.2, où les requêtes utilisent le protocole de filaire hérité OP_QUERY, une taille de lot de 1 fermera le curseur indépendamment du nombre de documents. |
| collation | array|object |
» Collation permet aux utilisateurs de spécifier des règles spécifiques au langage pour la comparaison des chaînes, par exemple, des règles pour les majuscules ou les accents. Lors de la spécification d'une collation, le champ "locale" est obligatoire ; tous les autres champs de la collation sont optionnels. Pour la description de ces champs, reportez-vous au » document Collation.
Si la collation n'est pas spécifiée mais que la collection a une collation par défaut, l'opération utilisera la collation spécifiée pour la collection. Si aucune collation n'est spécifiée pour la collection ou pour l'opération, MongoDB utilisera le binaire simple de comparaison utilisé dans les versions précédentes pour les comparaisons des chaînes.
Cette option est disponible en MongoDB 3.4+ et une exception sera émise au moment de l'exécution si elle est spécifiée dans une version antérieure.
|
| comment | mixed |
Un commentaire arbitraire pour aider à tracer l'opération à travers
le profil de la base de données, la sortie currentOp et les journaux.
Le commentaire peut être n'importe quel type BSON valide pour MongoDB
4.4+. Les versions de serveur antérieures ne prennent en charge que
les valeurs de chaîne.
Retombe sur l'option dépréciée "$comment" si non
spécifiée.
|
| exhaust | bool | Le flux de données en aval à pleine puissance dans plusieurs paquets "more", en supposant que le client lira entièrement toutes les données interrogées. Plus rapide lorsqu'on tire beaucoup de données et savez qu'on veut tout tirer. Remarque : le client n'est pas autorisé à ne pas lire toutes les données sauf s'il ferme la connexion. Cette option n'est pas prise en charge par la commande find dans MongoDB 3.2+ et forcera le pilote à utiliser la version du protocole de filaire hérité (c'est-à-dire OP_QUERY). |
| explain | bool |
Si true le curseur MongoDB\Driver\Cursor retourné
contiendra un seul document qui décrit le processus et les index utilisés
pour retourner la requête.
Retombe sur l'option dépréciée "$explain" si non
spécifiée.
Cette option n'est pas prise en charge par la commande find dans MongoDB
3.2+ et ne sera respectée que lors de l'utilisation de la version du
protocole de filaire hérité (c'est-à-dire OP_QUERY). La commande
» explain
doit être utilisée sur MongoDB 3.0+.
|
| hint | string|array|object |
Spécification de l'index. Spécifiez soit le nom de l'index en tant que
chaîne, soit le modèle de clé d'index. Si spécifié, le système de requête
ne considérera que les plans utilisant l'index suggéré.
Retombe sur l'option dépréciée "hint" si non spécifiée.
|
| let | array|object |
Dictionnaire des noms et des valeurs des paramètres. Les valeurs doivent être des constantes ou des expressions fermées qui ne font pas référence aux champs du document. Les paramètres peuvent ensuite être accédés en tant que variables dans un contexte d'expression agrégée (par exemple $$var).
Cette option est disponible dans MongoDB 5.0+ et entraînera une exception au moment de l'exécution si elle est spécifiée pour une version antérieure du serveur.
|
| limit | int | Le nombre maximum de documents à retourner. Si non spécifié, alors par défaut à aucune limite. Une limite de 0 est équivalente à ne pas définir de limite. |
| max | array|object |
La limite supérieure exclusive pour un index spécifique.
Retombe sur l'option dépréciée "$max" si non
spécifiée.
|
| maxAwaitTimeMS | int |
Entier positif indiquant la limite de temps en millisecondes pour le
serveur pour bloquer une opération getMore si aucune donnée n'est
disponible. Cette option ne doit être utilisée qu'en conjonction avec
les options "tailable" et
"awaitData".
|
| maxTimeMS | int |
La limite de temps cumulative en millisecondes pour le traitement des
opérations sur le curseur. MongoDB arrête l'opération au premier point
d'interruption le plus proche.
Retombe sur l'option dépréciée "$maxTimeMS" si non
spécifiée.
|
| min | array|object |
La limite inférieure inclusive pour un index spécifique.
Retombe sur l'option dépréciée "$min" si non
spécifiée.
|
| noCursorTimeout | bool | Empêche le serveur de mettre fin aux curseurs inactifs après une période d'inactivité (10 minutes). |
| projection | array|object | Les » spécifications de projection pour déterminer quels champs inclure dans les documents retournés. Lors de l'utilisation de la fonctionnalité ODM pour désérialiser les documents en tant que leur classe PHP d'origine, il faut s'assurer d'inclure le champ __pclass dans la projection. Cela est nécessaire pour que la désérialisation fonctionne et sans cela, l'extension renverra (par défaut) un objet stdClass à la place. |
| readConcern | MongoDB\Driver\ReadConcern | Un read concern à appliquer à l'opération. Par défaut, le read concern de l'URI de connexion MongoDB sera utilisé. Cette option est disponible dans MongoDB 3.2+ et entraînera une exception au moment de l'exécution si elle est spécifiée pour une version de serveur plus ancienne. |
| returnKey | bool |
Si true, ne retourne que les clés d'index dans les documents
résultants. La valeur par défaut est false. Si true et que la
commande find n'utilise pas d'index, les documents retournés seront vides.
Retombe sur l'option dépréciée "$returnKey" si non
spécifiée.
|
| showRecordId | bool |
Détermine si l'identifiant d'enregistrement doit être retourné pour
chaque document. Si true, ajoute un champ "$recordId"
de premier niveau aux documents retournés.
Retombe sur l'option dépréciée "$showDiskLoc" si non
spécifiée.
|
| singleBatch | bool |
Détermine si le curseur doit être fermé après le premier lot.
Par défaut à false.
|
| skip | int | Nombre de documents à sauter. Par défaut à 0. |
| sort | array|object |
La spécification de tri pour l'ordonnancement des résultats.
Retombe sur l'option dépréciée "$orderby" si non
spécifiée.
|
| tailable | bool | Renvoie un curseur tailable pour une collection capée. |
| Version | Description |
|---|---|
| PECL mongodb 2.0.0 |
L'option "partial" a été supprimée. Utiliser
"allowPartialResults" à la place.
L'option "maxScan" a été supprimée. Le Support
pour cette option a été supprimé dans MongoDB 4.2.
L'option "modifiers" a été supprimée. Cette option était
utilisée pour les modificateurs d'ancienne requête, qui sont tous dépréciés.
L'option "oplogReplay" a été supprimée. Cela est ignoré
dans MongoDB 4.4 et plus récent.
L'option "snapshot" a été supprimée. Son support a été
supprimé dans MongoDB 4.0.
Une valeur négative pour l'option "limit" n'implique plus
true pour l'option "singleBatch". Pour ne recevoir
qu'un seul lot de résultats, combinez une valeur positive
"limit" avec l'option
"singleBatch".
|
| PECL mongodb 1.14.0 |
Ajout de l'option "let". L'option
"comment" accepte désormais n'importe quel type.
|
| PECL mongodb 1.8.0 |
Ajout de l'option "allowDiskUse".
L'option "oplogReplay" est dépréciée.
|
| PECL mongodb 1.5.0 |
Les options "maxScan" et "snapshot"
sont dépréciées.
|
| PECL mongodb 1.3.0 |
Ajout de l'option "maxAwaitTimeMS"
|
| PECL mongodb 1.2.0 |
Ajout des options "allowPartialResults",
"collation", "comment",
"hint", "max",
"maxScan", "maxTimeMS",
"min", "returnKey",
"showRecordId", et "snapshot".
Renommer l'option "partial" en
"allowPartialResults". Pour la compatibilité ascendante,
"partial" sera toujours lu si
"allowPartialResults" n'est pas spécifié.
Supprime l'option "secondaryOk" obsolète. Pour les
requêtes utilisant le protocole de filaire hérité OP_QUERY, le pilote
définira le bit secondaryOk selon les besoins
conformément à la
» Spécification de sélection du serveur.
|
| PECL mongodb 1.1.0 | Ajout de l'option "readConcern". |
Exemple #1 Exemple de MongoDB\Driver\Query::__construct()
<?php
/* Selectionne uniquement les documents écrits par "bjori" avec au moins 100 vues */
$filter = [
'author' => 'bjori',
'views' => [
'$gte' => 100,
],
];
$options = [
/* Retourne uniquement les champs suivants dans les documents correspondants */
'projection' => [
'title' => 1,
'article' => 1,
],
/* Retourne les documents dans l'ordre décroissant des vues */
'sort' => [
'views' => -1
],
];
$query = new MongoDB\Driver\Query($filter, $options);
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::PRIMARY);
$cursor = $manager->executeQuery('databaseName.collectionName', $query, ['readPreference' => $readPreference]);
foreach($cursor as $document) {
var_dump($document);
}
?>