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 ?
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 ?
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/
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 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.