我正在建立一个模糊的游戏搜索,以搜索mongodb中的游戏并显示匹配的项目。共有3个搜索栏,您可以按名称,类型或平台进行搜索。流派和平台存储在数据库的数组中,我无法弄清楚如何查看数组中的一项是否与搜索词匹配。当数组中只有一项时,它可以工作,但是如果有两项或更多,则它不起作用。
这就是我现在拥有的:
if (req.query.searchGenre) {
const regex = new RegExp(escapeRegex(req.query.searchGenre), "gi")
Games.find({ genre: { $in: regex } }, (err, games) => {
console.log(regex)
if (err) {
console.log(err)
} else {
res.render("index", { games: games })
}
})
}
我尝试了mongodb文档中的所有数组查询选择器,但这些选择器不起作用。
如果您有任何想法,我将不胜感激!
答案 0 :(得分:0)
如果我理解正确,并且您的查询尝试将genre
数组中的任何元素与搜索模式进行匹配,那么$elemMatch和$regex是您想要的运算符
Games.find({ genre: { $elemMatch: { $regex: regex } } }, ...)
答案 1 :(得分:0)
MogoDb具有您可以调用的 findOne()方法
说
Games.findOne({ genre: { $in: regex } })
只给出第一个可用项目