MongoDb - полнотекстовый поиск Используйте $ текстовый поиск в $ или запрос
Я борюсь с запросом. (Узел, Монго - Мангуст) Вот моя dbs "схема":
const ProjectSchema = new Schema({
title: { type: String }
author: { type: Schema.Types.ObjectId }
});
const Project = mongoose.model('project', ProjectSchema);
module.exports = Project;
const UserSchema = new Schema({
fullName: { type: String }
});
const User = mongoose.model('user', UserSchema);
module.exports = User;
Коллекция проекта добавила ссылку на пользователя.
Хорошо, сейчас я создал текстовые индексы в коллекции титровальных проектов, чтобы иметь возможность поиска по $ text $ из пользовательского ввода, который работает совершенно нормально. Теперь то, что я хотел бы сделать, - это выполнить тот же запрос, выполнить поиск по монго в полном имени пользователя ref. Для поиска по названию проекта или автору полное имя.
Я создал указатель на автора проекта и указатель текста на User.fullName. Пока вот код, который я попробовал:
// My query from my controller
// First I text $search on the user collection
const users = await User.find({
$text: {
$search: req.query.search, $caseSensitive: false,
},
});
// Then I populate an array to get only the ids of users found
const usersIds = [];
if (users) {
await users.forEach((user) => {
usersId.push(user._id);
});
}
// Then my find query
const projects = await Project.find({
$or: [{
$text: {
$search: req.query.search,
$caseSensitive: false
},
author: { $in: usersIds }
}]
})
Моя идея заключалась в том, чтобы использовать $ или, чтобы сказать Монго текстовый поиск в Products.title. И потому что я не смог textSearch в поле ref. Я подумал посмотреть поиск пользователей, получить идентификаторы, если они есть, а затем отфильтровать авторские поля ссылок... Но я думаю, что я на неверном пути. Как только я пытаюсь настроить оба условия, это не работает, но работает индивидуально... У кого-нибудь есть идея? Спасибо