541 votes

Vérifier si un champ contient une chaîne de caractères

Je cherche un opérateur qui me permette 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 ?

18voto

Anurag Misra Points 728

La façon la plus simple d'accomplir cette tâche

Si vous voulez que la requête soit sensible à la casse

db.getCollection("users").find({'username':/Son/})

Si vous voulez que la requête soit insensible à la casse

db.getCollection("users").find({'username':/Son/i})

1 votes

Comment utiliser les variables avec les regex ?

18voto

Patthebug Points 392

Voici ce que vous devez faire si vous connectez MongoDB via Python

db.users.find({"username": {'$regex' : '.*' + 'Son' + '.*'}})

vous pouvez également utiliser un nom de variable au lieu de 'Son' et donc la concaténation de chaîne.

7voto

Hisham Points 647

Réponse idéale son indice d'utilisation i option pour insensible à la casse

db.users.findOne({"username" : new RegExp(search_value, 'i') });

0 votes

Les Regex doivent être nettoyés.

7voto

tate Points 71

Cela devrait faire le travail

db.users.find({ username: { $in: [ /son/i ] } });

Le site i est juste là pour éviter les restrictions de correspondance de cas uniques de lettres.

Vous pouvez vérifier le $regex sur la documentation de MongoDB. Voici un lien : https://docs.mongodb.com/manual/reference/operator/query/regex/

2voto

Scott Wager Points 207

Si votre regex inclut une variable, assurez-vous de s'échapper il.

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}

Cela peut être utilisé comme suit

new RegExp(escapeRegExp(searchString), 'i')

Ou dans une requête mongoDb comme celle-ci

{ '$regex': escapeRegExp(searchString) }

Posté le même commentaire ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X