繁体   English   中英

如何在mongodb / mongoose和Node.js中的数组中找到一项

[英]How to find one item in an array in mongodb/mongoose and nodejs

我正在建立一个模糊的游戏搜索,以搜索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文档中的所有数组查询选择器,但这些都不起作用。

如果您有任何想法,我将不胜感激!

如果我正确理解并且您的查询尝试将genre数组中的任何元素与搜索模式进行匹配,则$ elemMatch$ regex是您想要的运算符

Games.find({ genre: { $elemMatch: { $regex: regex } } }, ...)

MogoDb有一个findOne()方法可以调用

Games.findOne({ genre: { $in: regex } })

仅给出第一个可用项目

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM