Я искал решение, но в моем случае ни один из них не работал
Столбцы объектов массива индексирования текста 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
, который возвращает пустой массив для списков.