我甚至试着替换
我试图在$match
中使用$regex
,它没有返回匹配的文档。
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);
}
});
谁能告诉我哪里出了问题或正确的语法?
我甚至试着替换
'Field2': { $regex: /Value_2/g }
正如您链接到的$regex
文档中所说的,有两种方法可以做到这一点:
Field2: /Value_2/g
或
Field2: { $regex: 'Value_2', $options: 'g' }
但我也试了你的第二次尝试'Field2': { $regex: /Value_2/g }
,效果也很好。
顺便说一句,g
regex选项在这种情况下没有意义,因为你只需要一个匹配。请注意,$regex
文档中甚至没有列出它。
我用下面的代码使它工作:
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);
}
});
使用console.dir(Value_match)
将对象内容推送到控制台时,它打印出'/Value_2/'