При непосредственном взаимодействии с апи MongoDB, вы можете сделать полнотекстовый поиск и сортировку оценки результата как это:
db.someCollection
.find({ $text: { $search: "some search phrase" } },
{score: { "$meta":"textScore" })
.sort({ score: { $meta:"textScore"} })
Как вы перевести это на Loopback фильтр?
Я попытался это, который не удалось:
{
"where":{
"$text" : { "search":"some search phrase" }
},
"fields": {
"score":{
"$meta":"textScore"
}
},
"orderby":"score ASC"
}
К сожалению, это приводит:
[
{},
{},
{}
]
Когда я смотрю на выходе профиля MongoDB, я считаю, что Loopback сгенерировал этот запрос:
"filter" : {
"$text" : {
"$search" : "some search phrase"
}
},
"sort" : {
"score" : 1
},
"projection" : {
"score" : 1
}
Так что это проект «оценка», как если бы это было нормальное поле, а не мета-мета поле ... и это в результате исключает все остальные поля.
Как получить петлевой генерировать правильный запрос, который должен выглядеть следующим образом: при выполнении
"filter" : {
"$text" : {
"$search" : "some search phrase"
}
},
"sort" : {
"score" : {
"$meta" : "textScore"
}
},
"projection" : {
"score" : {
"$meta" : "textScore"
}
}
Thx.