Текстовые индексы MongoDB для Array объектов - PullRequest
0 голосов
/ 16 апреля 2020

Я искал решение, но в моем случае ни один из них не работал

Столбцы объектов массива индексирования текста MongoDB

Индексирование массивов объектов в MongoDB

Моя проблема в том, что у меня есть модель списка goose, где каждый список может иметь много категорий, я хочу иметь возможность поиска по категории и вернуть все списки, связанные с этими категориями.

Моя модель определяется следующим образом

let ListingSchema = new Schema({
    categories: [{
        id: {type: Number, required: true},
        name: {type: String, required: true},
        suggestedName: {type: String, required: true},
        link: {type: String, path: true}
    }],
    allergyAdvice: {type: String},
    location: {type: String, required: true, maxlength: 100},
    vendorId: {type: Schema.Types.ObjectId, ref: 'User', index: true},
}, {timestamps: true});

ListingSchema.index({
    alergyAdvice: 'text',
    'categories.name': 'text',
}, {
    weights: {
        'categories.name': 7,
        alergyAdvice: 4,
    },
});

ListingSchema.set('toObject', {getters: true});
ListingSchema.set('toJSON', {getters: true});

Когда дело доходит до поиска списков со связанными категориями, я использую следующий запрос -

const listings = await Listing.find({
                $text: {$search: "Sweet"}
            });

Запрос будет работать для Индекс alertgyAdvice, но не индекс categories.name, который возвращает пустой массив для списков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...