【发布时间】:2019-04-10 03:09:57
【问题描述】:
尝试使用正则表达式构建猫鼬查询,但由于某种原因它总是返回零结果。
我有一个名为 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...
【问题讨论】:
-
试试
query.wind_direction = { "$regex": new RegExp("\\b(?:" + req.body.wind_direction.join("|") + ")\\b"), "$options": "i" }或query.wind_direction = { "$regex": "\\b(?:" + req.body.wind_direction.join("|") + ")\\b", "$options": "i" } -
谢谢!第一条评论对我有用。不知道“?:”的存在让生活变得如此轻松!
-
只是为了确保
query.wind_direction = { "$regex": new RegExp("\\b(?:" + req.body.wind_direction.join("|") + ")\\b"), "$options": "i" }有效,对吧?还是第二个? -
第一个适合我
标签: javascript regex mongodb mongoose mongodb-query