Итак, в основном у меня есть модель с кучей строковых полей, таких как:
const Schema: Schema = new Schema(
{
title: {
type: String,
trim: true
},
description: {
type: String,
trim: true
},
...
}
);
Schema.index({ '$**': 'text' });
export default mongoose.model('Watch', Schema);
, где я все их индексирую.
Теперь, когда я ищу, эта схема используется как ссылка на другую модель. Я выполняю поиск, подобный этому, где user
является экземпляром другой модели
const { search, limit = 5 } = req.query;
const query = search && { match: { $text: { $search: new RegExp(search, 'i') } } };
const { schemaRes } = await user
.populate({
path: 'schema',
...query,
options: {
limit
}
})
.execPopulate();
, и сам поиск, кажется, работает нормально, проблема в том, что поля поиска начинают становиться более Speci c Мне кажется, что это не очень хорошо.
Пример дБ
{ title: 'Rolex', name: 'Submariner', description: 'Nice' }
{ title: 'Rolex', name: 'Air-King', description: 'Nice' }
Когда параметр поиска Rolex
Я получаю оба элемента, что нормально, но когда параметр поиска становится Rolex Air-King
я продолжаю получать оба предмета, что мне нехорошо, потому что я бы предпочел получить только один.
Могу ли я что-то сделать для этого?