Я пытаюсь создать компонент автозаполнения, который ищет в mongodb некоторые документы.У меня в настоящее время есть текстовый индекс как таковой:
collection.createIndex({
nameFirst: 'text',
nameLast: 'text'
});
Я ищу по этому индексу как таковой:
docs = await collection.aggregate([
{
$match: {
$text: {
$search: term,
$caseSensitive: false
}
}
},
{
$project: {
playerID: 1,
name: { $concat: [ '$nameFirst', ' ', '$nameLast'] }
_id: 0
}
},
{
$sort: {
score: { $meta: 'textScore' }
}
}
]).limit( 25 ).toArray();
Однако MongoDB, кажется, действует так, как он выполняет поисктермин и применяет этот поисковый термин к каждому полю в отдельности.Я пытаюсь сделать это немного по-другому, когда он ищет два соединенных поля.
Я не вижу в их документации ничего, что содержало бы руководство по созданию текстового индекса для двух полей, соединенных вместе.Я вижу только варианты добавления полей по отдельности.Это возможно?Похоже, что это должно быть ...
ПРИМЕЧАНИЕ Я использую aggregate
, потому что я использую $lookup
, чтобы получить некоторые другие документы, которые предоставляют полезную информацию в результатах поиска.Если это необходимо, я могу вставить этот код.Просто пытаюсь сделать так, чтобы на него было легче смотреть.