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') };