簡體   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