正则表达式与$ in运算符无法正常工作

时间:2014-04-16 11:32:41

标签: regex node.js mongodb mongoose

我是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运营商时遇到了一些错误吗?任何帮助将不胜感激。

1 个答案:

答案 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')]}}
 ]};