#node.js #mongodb #api
#node.js #mongodb #API
Вопрос:
итак, я хочу выполнить поиск в моей базе данных по названию задания. Однако это работает, только если точная строка совпадает, я бы хотел, чтобы поиск не учитывал регистр, а также находил строку в базе данных, если ti содержит часть поискового запроса.
Я огляделся и увидел, что регулярное выражение может работать для проблемы с корпусом, но я не уверен, как я бы реализовал его с тем, что у меня уже есть.
Jobs.route
router.get("/search", async (req, res) => {
let query = {};
let tmp = req.query;
if (tmp amp;amp; tmp != undefined amp;amp; Object.keys(tmp).length != 0) {
query = tmp;
}
let jobs = await Job.find(query)
.sort({ createdAt: -1 });
if (!jobs) {
return res.status(400).send({
message: `Encountered an error when getting job with title ${req.query.title}.`,
ok: false,
errors: [error],
jobs: {}
});
} else {
return res.send({
total_items: jobs.length,
message: `Returned all jobs with title ${req.query.title} successfully`,
ok: true,
errors: [],
jobs: jobs
});
}
});
module.exports = router;
Комментарии:
1. Пожалуйста, предоставьте
req.query
Ответ №1:
Сначала вам нужно будет добавить индекс ($text) в коллекцию.
См . : https://docs.mongodb.com/manual/reference/operator/query/text /
db.articles.createIndex( { subject: "text" } )
После завершения обновите запрос до
Jobs.find({ $text: { $search: "Developer" } }) //Software being the Job Title
В текущем коде: req.запрос -> «{ $text: { $search: «Разработчик» } }»;
Это поможет вам получить документы с соответствующими названиями, такими как ->
[ "SOFTWARE DEVELOPER", "Software Developer", "software developer" , "SoftWare DeveLoPer" , "BackEnd Developer" , "Developer In Test" ....]