web-dev-qa-db-fra.com

L'utilisation de la requête $ regex mongodb dans le noeud js ne fonctionne pas


À partir du nœud js, j’essaie de récupérer les documents en fonction du mot clé sans distinction de casse. Lorsque j'essaie directement depuis la console mongo db, je peux voir le résultat.

db.users.findOne({"displayName":{$regex: /.*abc./, $options:"i"}})

Mais quand j'essaie la même chose dans le nœud js, le résultat est vide.

var selector = { "displayName": {$regex: "/.*abc./", $options:"i"}}

est-ce dû à une expression régulière pas en javascript?.
Quelqu'un peut-il m'aider s'il vous plaît dans ce domaine.

11
Soorya Prakash

La valeur $regex doit être le modèle de chaîne à rechercher ou un objet d'expression régulière. Lorsque vous transmettez un modèle de chaîne, vous n'incluez pas les délimiteurs / comme vous le faites dans votre code node.js.

Donc, l’un ou l’autre pourrait fonctionner dans node.js:

var selector = {"displayName": {$regex: ".*abc.", $options:"i"}}

OR

var selector = {"displayName": {$regex: /.*abc./, $options:"i"}}
16
JohnnyHK

pourriez-vous s'il vous plaît essayer celui-ci, cela fonctionne pour moi.

var getValue='abc';
db.users.findOne({"displayName": new RegExp(regexValue, 'i')},function(err,res){if(err){console.log(err);}

else {console.log (res.length);} } )

9
Soe Naing Tun

Dans la console mongodb Essayez cette requête

db.users.findOne ({"displayName": {$ regex: ". * abc", $ options: "i"}})

et dans nodejs var sélecteur = utilisateurs.find ({"displayName": {$ regex: ". * abc", $ options: "i"}})

ici utilisateurs = est un nom de collection

1
Ganesh Apune