Mongodb nodeJS驱动程序任何字母的正则表达式

时间:2017-09-26 00:08:41

标签: node.js regex mongodb

如果我这样做,我有一个非常简单的9个文件的集合: db.products.find({"Description": /.*m.*/}).count()

它返回3.

在node.js中我有这个: db.collection("products").find({Description: new RegExp(`/.*${request.query.name}.*/`)});

它的行为就像我一样: db.collection("products").find({Description: new RegExp(request.query.name})});

我的意思是。我必须写一整个字才能得到结果。我应该注意,我在Description字段中有一个$ text索引,它是集合中唯一的$ text索引。

检索非常快但是......因为我在自动完成中使用它,所以我跳起来只能写一个字母来开始获得结果。我投影字段所以返回的数据不是太大。它适用于mongo控制台,但似乎我错过了Regex在Javascript中的工作方式。

非常感谢提前。

修改 以下:MongoDB Regular Expression Search - Starts with using javascript driver and NodeJS我尝试过: db.collection("products").find({Description: {'$regex': request.query.name}});

无济于事。我还需要输入一个完整的单词。我坚持用带有一个包含一个字母的正则表达式在mongo shell中工作。

我真的迷失在这里。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:1)

我认为你必须在这里使用 $ options 属性。像这样:

db.collection("products").find({ Description: { '$regex': request.query.name, $options: 'is' }
});

<强> I - 对于不区分大小写。

<强>取值 - 允许点字符匹配所有字符和换行符。

您可以查看更多此MongoDB $regex

我希望这会有所帮助。