我是mongoose和nodejs的新手。我试图使用正则表达式查询mongoose模式的数组字段,但即使有匹配的元素我也得到一个空数组。这就是我的代码的样子:
var regex = { $regex: new RegExp(req.query.query, 'i')};
var query = {$or: [
{name: regex}
, {ditributionAreas: {$in: [regex]}}
]};
TiffinboxSupplier.find(query, function(err, tiffinBoxSuppliers) {
if(err) { return next(err); };
res.json(tiffinBoxSuppliers);
});
代码适用于name
字段但会出现distributionAreas
数组的问题。我在使用$in
运营商时遇到了一些错误吗?任何帮助将不胜感激。
答案 0 :(得分:3)
我开始工作了,我只需要通过
new RegExp(req.query.query, 'i')
作为$in
运算符的值而不是
{ $regex: new RegExp(req.query.query, 'i')}
。
因此,上面的代码变为
var regex = { $regex: new RegExp(req.query.query, 'i')};
var query = {$or: [
{name: regex}
, {ditributionAreas: {$in: [new RegExp(req.query.query, 'i')]}}
]};