MongoDB Текстовый поиск по двум полям - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь создать компонент автозаполнения, который ищет в 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, чтобы получить некоторые другие документы, которые предоставляют полезную информацию в результатах поиска.Если это необходимо, я могу вставить этот код.Просто пытаюсь сделать так, чтобы на него было легче смотреть.

...