Explication détaillée de la façon dont PHP7 implémente la requête floue MongoDB

*文
Libérer: 2023-03-19 07:08:01
original
2756 Les gens l'ont consulté

Comment implémenter la requête floue MongoDB en php7 ? Je pense que l'instruction de requête floue de MongoDB est familière à tout le monde. Cet article présente principalement la méthode d'implémentation des requêtes floues dans MongoDB en PHP 7. L'article donne une introduction détaillée et un exemple de code, qui a une certaine valeur de référence et d'apprentissage pour tout le monde. J'espère que cela aide tout le monde.

Avant-propos

Dans le développement réel, il existe de nombreux scénarios dans lesquels la requête floue du shell MongoDB est très simple :

db.collection.find({'_id': /^5101/})
Copier après la connexion

La phrase ci-dessus est le query_id commençant par « 5101 ».

La requête floue est assez simple dans l'ancien MogoDB. Voici un simple enregistrement de la façon d'utiliser une requête floue :

Ligne de commande :

db.letv_logs.find({"ctime":/uname?/i});
Copier après la connexion

Opération php

$query=array("name"=>new MongoRegex("/.*”.$name.".*/i"));
$db->find($query);
Copier après la connexion

Ce qui suit parle principalement de la façon d'interroger dans le nouveau pilote PHP :

$query = new \MongoDB\Driver\Query('_id' => ['$regex' => '^5101']);
$this->getManager()->executeQuery($this->dbname . $this->collection, $query);
Copier après la connexion

Ce qui précède est l'implémentation de la requête floue dans le nouveau pilote. Pour être honnête, je me plains vraiment de ce nouveau pilote. Par rapport à l'ancien pilote, le nom de la fonction. est trop long. . . C'est presque plus que les noms de fonctions de Swift. De plus, de nombreuses fonctions de l’ancien pilote ont été supprimées du nouveau pilote. Bien qu'une bibliothèque de classes mongodb php library soit fournie pour le fonctionnement, il y a plus de 60 fichiers dans cette bibliothèque, parfois plus que mes fichiers de projet. Je recommande d’encapsuler vous-même une classe Driver pour l’utiliser.

Le discours ci-dessus est un peu hors sujet. En plus de la requête floue directe, vous devez faire particulièrement attention lorsque vous l'utilisez avec $in ou $nin :

$filter = ['_id' => ['$in' => ['$regex' => '^5101']]];
Copier après la connexion

Si vous écrivez le filtre comme ci-dessus, une erreur fatale sera générée lors de l'exécution :

PHP Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionException: $in needs an array in filename
Copier après la connexion

Il est indiqué qu'un tableau doit être fourni dans $in, modifions donc le ci-dessus $filter Ensuite, obtenez un tableau pour cela :

$filter = ['_id' => ['$in' => [['$regex' => '^5101']]];
Copier après la connexion

Mais malheureusement, nous ne parvenons toujours pas à obtenir le résultat souhaité avec succès :

PHP Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionException: cannot nest $ under $in in filename
Copier après la connexion

Ici, il est dit que $ ne peut pas apparaître dans $in, que dois-je faire ? En fait, pour utiliser la correspondance floue dans $in ou $nin, vous devez utiliser une instance de la classe MongoDBBSONRegex :

$filter = ['_id' => ['$in' => [new \MongoDB\BSON\Regex('^5101','i')]]];
Copier après la connexion

Cette fois, nous avons finalement obtenu le résultat souhaité .

Recommandations associées :

php implémente la génération personnalisée Mongodb d'ID à croissance automatique

Plan d'exécution de la vue MongoDB

Comment utiliser l'index MongoDB

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!