I want to use regex to find records that match certain pattern on Express.js using MongoDB.
Here is my code
var urlList = [];
var db = req.db;
var collection = db.get('project');
var regex = '/^'+url+'/';
console.log('regex = '+regex);
collection.find({url: { $regex: regex, $options: 'i' }},function(err,list){
console.log('length = '+list.length);
var arrayUrl = [];
for (var i=0;i<list.length;i++){
console.log(list[i].url);
arrayUrl.push(list[i].url);
}
});
But I got list.length = 0 although the database contains the records that match the pattern for sure.
Using the following command on cmd
db.project.find({url:{$regex:/^Projek-1/,$options: 'i'}});
I got the results I want.
How to use regex on express.js to find matched records in MongoDB database?
new RegExpvar regex = new RegExp("^"+url.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'i');, and remove the, $options: 'i'from the later code. Please check.^makes the regex match at the beginning of the string only. You will need to remove it if you want to match multiple occurrences of a pattern.