MongoDB正则表达式字符串以

时间:2018-11-25 16:27:34

标签: json regex mongodb

所以我有类似这样的东西

db.usuarios.insert
(
    [
        {
            "nome" : "neymala",
            "idade" : 40,
            "status" : "solteira"
        },
        {
            "nome" : "gabriel",
            "idade" : 31,
            "status" : "casado"
        },
        {
            "nome" : "jose",
            "idade" : 25,
            "status" : "solteiro"
        },
        {
            "nome" : "manoel",
            "idade" : 25,
            "status" : "solteiro",
            "interesses" : [
                "esporte",
                "musica"
            ]
        }
    ]
)

我想找到以ma开头并以l结尾的名称,例如“ manoel”或“ manuel”

我已经弄清楚了如何使用休闲查询:

db.usuarios.find({nome:{$regex: /^ma/ }})

db.usuarios.find({nome:{$regex: /l$/ }})

现在我想将它们组合成一个查询。

4 个答案:

答案 0 :(得分:2)

您可以将两个需求合并到一个正则表达式中:

db.usuarios.find({nome: /^ma.*l$/})

在正则表达式中,.*表示匹配0个或多个任何字符。因此,此正则表达式匹配以ma开头和以l结尾的名称,而忽略两者之间的任何内容。

答案 1 :(得分:1)

将两个查询与AND操作符组合在一起

db.usuarios.find({
$and:[
    {nome:{$regex: /^ma/ }},
    {nome:{$regex: /l$/ }}
]

})

答案 2 :(得分:0)

在javascript /.../中是一个正则表达式,因此不需要$regex db.usuarios.find({ $and:[ {nome: /^ma/ }, {nome: /l$/ } ] }) 另请注意,starts with可以命中索引。 ends with不能。这样,您最好有选择地使用starts with,否则会有很多对象扫描,这可能会占用额外的CPU并可能减慢查询速度。

答案 3 :(得分:0)

此代码可以帮助您吗?

您可以搜索小写字母字符串和大写字母字符串。......

enter image description here