Je cherche un opérateur, ce qui me permet de vérifier si la valeur d'un champ contient une certaine chaîne.
Quelque chose comme:
db.users.findOne({$contains:{"username":"son"}})
Est-ce possible?
Vous pouvez le faire avec le code suivant.
db.users.findOne({"username" : {$regex : ".*son.*"}});
db.users.findOne({"username" : {$regex : "son"}});
Comme le shell Mongo supporte les regex, c'est tout à fait possible.
Si nous voulons que la requête soit insensible à la casse, nous pouvons utiliser l'option "i", comme indiqué ci-dessous:
Voir: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions
la source
db.users.findOne({"username" : /.*son.*/});
pourrait aussi être exagéré et que l'expression/son/
{ username: /son/ }
https://docs.mongodb.com/manual/reference/sql-comparison/
http://php.net/manual/en/mongo.sqltomongo.php
MySQL
MongoDB
la source
Depuis la version 2.4, vous pouvez créer un index de texte sur le ou les champs pour rechercher et utiliser l' opérateur $ text pour les requêtes.
Créez d'abord l'index:
db.users.createIndex( { "username": "text" } )
Ensuite, pour rechercher:
db.users.find( { $text: { $search: "son" } } )
Repères (~ 150 000 documents):
Remarques:
db.collection.createIndex( { "$**": "text" } )
.la source
Comme il s'agit de l'un des premiers résultats dans les moteurs de recherche et qu'aucun des éléments ci-dessus ne semble fonctionner pour MongoDB 3.x, voici une recherche d'expression régulière qui fonctionne:
Pas besoin de créer d'index supplémentaire ou similaire.
la source
Voici ce que vous devez faire si vous connectez MongoDB via Python
vous pouvez également utiliser un nom de variable au lieu de «Son» et donc la concaténation de chaînes.
la source
.*${value}.*
}Manière la plus simple d'accomplir cette tâche
Si vous souhaitez que la requête soit sensible à la casse
Si vous souhaitez que la requête ne respecte pas la casse
la source
réponse idéale à son option d' indice d'utilisation i pour ne pas tenir compte de la casse
la source
Cela devrait faire le travail
Le
i
est juste là pour empêcher les restrictions de faire correspondre des cas individuels de lettres.Vous pouvez consulter la documentation $ regex sur la documentation MongoDB. Voici un lien: https://docs.mongodb.com/manual/reference/operator/query/regex/
la source
Comment ignorer les balises HTML dans une correspondance RegExp:
C'est probablement très facile à transformer en un filtre d'agrégation MongoDB.
la source