gpt4 book ai didi

javascript - 使用 $regex 查询 Mongoose 不返回任何结果

转载 作者:行者123 更新时间:2023-11-30 14:18:17 25 4
gpt4 key购买 nike

尝试使用正则表达式构建 mongoose 查询,但由于某种原因它总是返回零结果。

我有一个名为 Place 的模型,其值为 wind_direction。 wind_direction 是一个字符串,看起来像这样:

place.wind_direction = "SW, WSW, W, WNW, NW, NE, ENE, E";

我通过表单获取值,在本例中为“W, WNW, NW”,并尝试构建如下正则表达式:

var string = JSON.stringify(req.body.wind_direction)
string = string.replace(/[\[\]"]+/g,'').split(",")
var reg = ""
for(var i = 0; i < string.length; i++){
reg += "\b" + string[i] + "\b|";
}
reg = "/" + reg.substring(0, reg.length - 1) + "/";
query.wind_direction = { "$regex": reg, "$options": "i" }

当我使用 console.log 查询时,它看起来像这样:

{ wind_direction: { '$regex': '/\bW\b|\bWNW\b|\bNW\b/', '$options': 'i' } }

然后,当我使用 Place.find(query, function(req,res... 运行简单查询时,它没有返回任何结果。但是当我在在线正则表达式测试器中测试我的正则表达式时,它起作用了。

最佳答案

看起来你的req.body.wind_direction已经是一个数组,你可以用来构建交替模式,没有必要JSON.stringify这个数组.要构建交替,您可以使用 arr.join("|")

为了避免重复\b,你可以将所有的选项分组,并且一个non-capturing group最适合这里:\b(?:term1|term2|termN)\b

你可以使用

query.wind_direction = { "$regex": new RegExp("\\b(?:" + req.body.wind_direction.join("|") + ")\\b"), "$options": "i" } 

关于javascript - 使用 $regex 查询 Mongoose 不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53176743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com