node.js - 如何使用nodejs查询mongodb以进行不区分大小写的搜索/包含子字符串搜索的字符串
问题描述
所以我想在我的数据库中搜索一个职位。但是,只有在确切的字符串匹配时才有效,我希望搜索不区分大小写,并且如果 ti 包含一些搜索查询,则可以在数据库中找到该字符串。
我环顾四周,看到正则表达式可能适用于大小写问题,但我不确定如何用我已有的实现它。
Jobs.route
router.get("/search", async (req, res) => {
let query = {};
let tmp = req.query;
if (tmp && tmp != undefined && 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;
解决方案
首先,您必须向集合中添加一个索引 ($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.query -> "{ $text: { $search: "Developer" } }";
这将帮助您获得具有匹配标题的文档,例如 ->
[ "SOFTWARE DEVELOPER", "Software Developer", "software developer" , "SoftWare DeveLoPer" , "BackEnd Developer" , "Developer In Test" ....]
推荐阅读
- html - iOS 9 上 Internet Explorer 11 和 Safari 的强元素上的不同字体
- .net - 我如何确保远程服务器提供的实际上是真实的
- java - 将两个 graphQl 查询合并为一个
- vba - 宏 (VBA) 使 Microsoft word 崩溃(查找和替换)
- python - 改变 numpy 数组中一致值的比例
- c# - 制作自定义电话协议 windows 10
- sql - 使用 JOOQ java 创建 Athena 表
- wpf - 如何在没有图像的情况下在 WPF 中制作具有透明背景和模糊效果的堆栈面板?
- java - Netty:如何捕获“java.io.IOException:对等连接重置”
- python - Python VLC - 下一个曲目