如何从Mongo中查询一个字段,该字段中的值实际上是一个数字,但存储为字符串?

时间:2019-01-16 18:56:43

标签: regex mongodb nosql mongodb-query

令人困惑的是,字符串字段中的数字可以以前导零开头,但我的查询参数将不包含该数字

对象1:

{
"_id" : ObjectId("5c3f6aec29c2e3193315b485"),
"flightCode" : "000541300157840"
}

对象2:

{
"_id" : ObjectId("5c3f6aec29c2e3193315b485"),
"flightCode" : "00054130015784"
}

如果我要查找与编号54130015784相匹配的航班代码,该如何写查询?

2 个答案:

答案 0 :(得分:2)

您需要使用以下正则表达式的$regex运算符:

var code = "541300157840";
var regex = "^0*" + code + "$"

db.col.find({ flightCode: { $regex: new RegExp(regex) } })

其中*表示0出现零次或多次,这意味着它同时适用于000541300157840541300157840

答案 1 :(得分:0)

如果您认为您的数据将包含文本代码,以便可以识别字符串,则可以使用此代码。

正则表达式:
54130015784(?="\n)

说明:

Positive Lookahead (?="\n)
Assert that the Regex below matches
" matches the character " literally (case sensitive)
\n matches a line-feed (newline) character (ASCII 10)

示例:
https://regex101.com/r/sF0YfH/3

让我知道它是否有效。如果不清楚,您想要什么。