Requête Mongo avec Regex dans le noeud JS fonctionnant sur une variable

J’ai un problème. Je veux interroger ma MongoDB dans mon fichier Node JS en utilisant quelque chose comme LIKE pour une firebase database relationnelle conventionnelle. Le problème est que ce que je veux aimer n’est pas un littéral … c’est une variable! Je n’ai trouvé aucun bon moyen de le faire pour l’instant. Voici le coup “durrr premier essai” que j’ai pris:

var result = postData.replace(/\+/g,' ').subssortingng(5); db.testlogwiki.find({"line_text" : /result/ }; //predictably only matches to the literal "result" as opposed to my variable 

testlogwiki est créé en mongo … je l’ai en cours d’exécution et cela ne mach à des entrées de firebase database avec “line_text” contenant “résultat” littéralement.

Cela semble être une question très simple …

Essaye celui-là:

 db.testlogwiki.find({"line_text" : new RegExp(result) }; 

Les deux fonctionneront

 db.testlogwiki.find({"line_text" : new RegExp(result, 'i') }; // to make this case insensitive 

ou

 db.testlogwiki.find( { line_text: { $regex: result[, $options: 'i'] } } ); 

Vous pouvez également utiliser l’option $ regex.

 db.testlogwiki.find( { line_text: { $regex: result[, $options: 'i'] } } ); 

Toutes les autres réponses peuvent échouer en fonction de votre variable d’entrée

Vous pouvez utiliser RegExp comme d’autres l’ont indiqué, mais vous devez échapper aux caractères regex spéciaux, faute de quoi cela peut échouer.

Lodash a une fonction pour le faire (si vous ne l’utilisez pas, vous devriez probablement le faire, cela ajoute beaucoup de sucre qui n’est même pas dans la spécification ES6 +)

https://lodash.com/docs#escapeRegExp

db.COLLECTION.find({FIELD_NAME: new RegExp(_.escapeRegExp(VAR), 'i') };