Reputation: 3269
In mongodb the equivalent to sql "like" operator is
db.users.find({"shows": /m/})
Using nodejs/javascript I want to dynamically change letter, based on url paramater.
I have tried
letter = req.params.letter;
db.users.find({"shows": '/' + letter + '/'})
This doesn't work, I guess because the slashes are now strings are interpreted differently.
Upvotes: 6
Views: 6191
Reputation: 1
You can try this:
let filter = "Dynamic";
let str = /.*Raj.*/;
console.log(str);
console.log(typeof(str));
let stra = eval(`/.*${filter}+.*/`);
console.log(stra);
console.log(typeof(stra));
Upvotes: 0
Reputation: 21682
+1 for mindandmedia on the syntax. However, please remember, that if you want the query to use an index efficiently, you have to use prefix queries (also called rooted regexps) like /^prefix/
Your query is likely to be horribly slow otherwise - see the note in the docs here:
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions
Upvotes: 2
Reputation: 6825
One way to do it, according to the documentation page:
db.users.find( { shows : { $regex : letter } } );
Upvotes: 16