【发布时间】:2017-09-26 09:58:53
【问题描述】:
如果我这样做,我有一个非常简单的 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})});
我的意思是。我必须写一个完整的词才能得到结果。我应该注意我在描述字段中有一个 $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 中使用带有包含字母的正则表达式。
我真的迷路了。任何帮助将非常感激。
【问题讨论】: