如果我这样做,我有一个非常简单的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})});
检索非常快但是......因为我在自动完成中使用它,所以我跳起来只能写一个字母来开始获得结果。我投影字段所以返回的数据不是太大。它适用于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中工作。
我真的迷失在这里。任何帮助将非常感激。
答案 0 :(得分:1)
我认为你必须在这里使用 $ options 属性。像这样:
db.collection("products").find({ Description: { '$regex': request.query.name, $options: 'is' }
});
<强> I 强> - 对于不区分大小写。
<强>取值强> - 允许点字符匹配所有字符和换行符。
您可以查看更多此MongoDB $regex。
我希望这会有所帮助。