【发布时间】:2020-08-13 13:06:59
【问题描述】:
我正在开发一个使用数据库 MongoDB 的 golang 项目。我有一个包含以下记录的集合:
[
{
"_id": 1,
"vals": [
"110",
"2211"
]
},
{
"_id": 1,
"vals": [
"Abcd",
"102"
]
}
]
我想执行一个搜索,比如如果我通过“11001”,那么第一条记录将返回。但我还没有找到任何解决方案来做同样的事情。我尝试了以下查询:
db.getCollection('ColName').find({"vals":{"$regex": "^11001", "$options": "i"}})
保存在 db 中的字符比我在搜索中传递的要少。如果我通过“110”或“11”,那么它会给出结果,但我的要求不同,我有完整的字符串,需要匹配 2,3 或 4 个字符。
【问题讨论】:
-
^11((0)?0)?$或^(11|110|1100)$或三个单独的find语句(没有正则表达式)将匹配11、110、1100,但不匹配111、@ 987654330@ -
搜索字符串
11001显然应该被截断为1100并转换为一个正则表达式或三个子字符串11、110、1100如果不需要匹配5个符号跨度> -
@bartolo-otrit 感谢您的建议。现在我已经将字符串分成 11、110、1100 并与 in 运算符匹配。
标签: mongodb-query