我在代码中进行了正则表达式搜索,以通过给定的字符串获取数据库中的名称。我遇到的问题是,如果我有一个名字“ Jim”和一个名字“ Jimmy”,由于某种原因,我总会得到“ Jimmy”。
let regexp = new RegExp(userName, "i");
let name = await names.findOne({ name: regexp });
因此,当我输入“ Jimmy”时,我会得到Jimmy,“ Jimm”时,我会得到Jimmy,但一切都很好,但是当我尝试找到“ Jim”时,我就会得到Jimmy,所以我没有办法得到Jim。
如果有(或),我也找不到名字?例如:汤姆(托马斯),而我搜索的是“汤姆(托马斯)”,根本找不到它,但这可能是猫鼬的问题。
答案 0 :(得分:0)
我认为这与您如何订购数据库或至少从数据库中查询结果有关。您可以对表格进行排序,也可以对查询结果进行排序。
尝试使用以下一种(字母或反向字母):
let name = await names.sort({ name: 1 }).findOne({ name: regexp });
let name = await names.sort({ name: -1 }).findOne({ name: regexp });
对于第二个问题,您想调查“模糊匹配”是什么,以便像Tom
这样的事物可以返回像Thomas
这样的结果。
尝试看看这个: