Mongo正则表达式在开始时优先考虑锚点并在一个查询中回退到子串匹配

时间:2014-03-10 10:25:13

标签: regex mongodb

假设我有一个包含从'aaaa'到'zzzz'的完整记录集的集合:

{text: 'aaaa'}
{text: 'aaab'}
...
{text: 'zzzy'}
{text: 'zzzz'}

我想提供最多N次自动完成匹配。因此,m应在返回maaamaab之前返回aaamaabm。可以在一个查询中完成吗?

如果我只是搜索{text: {$regex: 'm'}},则会先返回以$natural顺序存储的内容。按text排序没有帮助。将{(1}}开头的目标字符串锚定的正则表达式也无济于事,因为{text: {$regex: '^m|m'}}失败并且^m将匹配。我已尝试.*m - 两者,但仍会首先返回仅匹配$or的结果。

这是the same question for SQL

我怀疑我必须首先运行m的查询,如果返回的结果少于N个,请在字符串中的{text: {$regex: '^m'}}附加m的第二个查询结果{{1} }。

是否有更快的方法来确定匹配字符串开头附近的匹配优先级,或者至少从{text: {$regex: 'm'}}开始?

0 个答案:

没有答案