J'aime aller trouver un utilisateur dans mongoDb en recherchant un utilisateur appelé value. Le problème avec:
username: 'peter'
est que je ne le trouve pas si le nom d'utilisateur est "Peter", ou "PeTER" .. ou quelque chose comme ça.
Alors je veux faire comme SQL
SELECT * FROM users WHERE username LIKE 'peter'
J'espère que vous avez ce que je vous demande?
Short: 'field LIKE value' dans mongoose.js / mongodb
Peter
ouPeTER
non plus car elleLIKE
n'est pas insensible à la casse.Réponses:
Pour ceux qui cherchaient une solution, voici:
la source
".*"
comme nom d'utilisateur.J'ai eu des problèmes avec cela récemment, j'utilise ce code et fonctionne très bien pour moi.
Utilisez directement le
/Peter/i
travail, mais j'utilise'/'+data+'/i'
et ne fonctionne pas pour moi.la source
la source
la source
new RegExp(var, "i")
la source
Vous devriez utiliser une regex pour cela.
Méfiez-vous cependant que cette requête n'utilise pas d'index.
la source
mangouste doc pour trouver. mongodb doc pour regex.
Notez le premier argument que nous passons à la
mongoose.findOne
fonction:{ "name" : { $regex: /Ghost/, $options: 'i' } }
,"name"
est le champ du document que vous êtes à la recherche,"Ghost"
est l'expression régulière,"i"
est pour la casse insensible. J'espère que ceci vous aidera.la source
La requête suivante trouvera les documents avec la chaîne requise insensible à la casse et avec une occurrence globale également
la source
C'est ce que j'utilise.
la source
Voici mon code avec expressJS:
la source
si je veux interroger tous les enregistrements à certaines conditions, je peux utiliser ceci:
la source
$regex
moment où vous auriez pu simplement l'utiliser{ $exists: true }
.Juste en complément de la réponse de @PeterBechP.
N'oubliez pas de scaper les caractères spéciaux. https://stackoverflow.com/a/6969486
la source
C'est ma solution pour convertir chaque valeur d'un req.body en un paramètre de type mangouste LIKE :
la source