Я пытаюсь выполнить запрос регулярного выражения mongodb в поле. Я бы хотел, чтобы запрос отдавал приоритет полному совпадению, если он находит его, а затем частичному совпадению.
Например, если у меня есть база данных, полная следующих записей.
{
"username": "patrick"
},
{
"username": "robert"
},
{
"username": "patrice"
},
{
"username": "pat"
},
{
"username": "patter"
},
{
"username": "john_patrick"
}
И я запрашиваю имя пользователя «pat». Я хотел бы получить результаты с прямым соответствием сначала, а затем частичными. Таким образом, результаты будут упорядочены ['pat', 'patrick', 'patrice', 'patter', 'john_patrick'].
Можно ли сделать это только с помощью запроса mongo? Если да, может ли кто-нибудь указать мне на ресурс, подробно описывающий, как это сделать?
Вот запрос, который я пытаюсь использовать для этого.
db.accounts.aggregate({ $match :
{
$or : [
{ "usernameLowercase" : "pat" },
{ "usernameLowercase" : { $regex : "pat" } }
]
} })