假设我有一个包含从'aaaa'到'zzzz'的完整记录集的集合:
{text: 'aaaa'}
{text: 'aaab'}
...
{text: 'zzzy'}
{text: 'zzzz'}
我想提供最多N次自动完成匹配。因此,m
应在返回maaa
或maab
之前返回aaam
,aabm
等。可以在一个查询中完成吗?
如果我只是搜索{text: {$regex: 'm'}}
,则会先返回以$natural
顺序存储的内容。按text
排序没有帮助。将{(1}}开头的目标字符串锚定的正则表达式也无济于事,因为{text: {$regex: '^m|m'}}
失败并且^m
将匹配。我已尝试.*m
- 两者,但仍会首先返回仅匹配$or
的结果。
我怀疑我必须首先运行m
的查询,如果返回的结果少于N个,请在字符串中的{text: {$regex: '^m'}}
附加m
的第二个查询结果{{1} }。
是否有更快的方法来确定匹配字符串开头附近的匹配优先级,或者至少从{text: {$regex: 'm'}}
开始?