How to use $regex in mongodb aggregation query within $match

I am trying to use the $regex within $match, its not returning the matching documents.

db.collection('MyCollection', function (err, collection) {
            collection.aggregate([
                     { $match: { 'Code': 'Value_01', 'Field2': { $regex: '/Value_2/g'}} },  
                     {$project: {
                         _id: 1,
                         "CodeNumber":"$Code",
                         "FieldName2" "$Field2"
                     }
                 }], function (err, Result_doc) {
                     console.log(Result_doc);
                    }
});

Can anyone tell me where its going wrong or the correct syntax?


I even tried with replacing the

'Field2': { $regex: /Value_2/g}

As it says in the $regex docs you linked to, the two ways to do this are:

Field2: /Value_2/g

OR

Field2: { $regex: 'Value_2', $options: 'g' }

But I also tried your second attempt of 'Field2': { $regex: /Value_2/g } and that worked as well.

BTW, the g regex option doesn't make sense in this context as you just need one match anyway. Note that it isn't even listed in the $regex docs.

I got it working with the following code:

var Value_match = new RegExp('Value_2');
db.collection('MyCollection', function (err, collection) {
            collection.aggregate([
                     { $match: { 'Code': 'Value_01', 'Field2': { $regex: Value_match}} },  
                     {$project: {
                         _id: 1,
                         "CodeNumber":"$Code",
                         "FieldName2" "$Field2"
                     }
                 }], function (err, Result_doc) {
                     console.log(Result_doc);
                    }
});

On pushing the object content to console using console.dir(Value_match) it prints out '/Value_2/'