我正在尝试对字段执行 mongodb 正则表达式查询。我希望查询在找到一个匹配项时优先考虑完整匹配项,然后再优先考虑部分匹配项。
例如,如果我有一个充满以下条目的数据库。
{
"username": "patrick"
},
{
"username": "robert"
},
{
"username": "patrice"
},
{
"username": "pat"
},
{
"username": "patter"
},
{
"username": "john_patrick"
}
Run Code Online (Sandbox Code Playgroud)
我查询用户名“pat”,我想首先返回直接匹配的结果,然后是部分匹配。因此结果将排序为 ['pat', 'patrick', 'patrice', 'patter', 'john_patrick']。
是否可以单独使用 mongo 查询来完成此操作?如果是这样,有人可以向我指出详细说明如何实现它的资源吗?
这是我尝试用来执行此操作的查询。
db.accounts.aggregate({ $match :
{
$or : [
{ "usernameLowercase" : "pat" },
{ "usernameLowercase" : { $regex : "pat" } }
]
} })
Run Code Online (Sandbox Code Playgroud)