Regex Mongodb正则表达式查询字符串的前2个字符

Regex Mongodb正则表达式查询字符串的前2个字符,regex,mongodb,Regex,Mongodb,在我的一个mongodb集合中,我有一个mm/dd/yyyy格式的日期字符串。现在,我想查询“mm”字符串 例如,2016年5月20日和2015年5月4日 我想获取字符串的前2个字符并查询“05”。这样,我得到的结果应该只有2016年5月20日 我怎样才能做到这一点 谢谢 对于正则表达式解决方案,以下内容就足够了 var search = "05", rgx = new RegExp("^"+search); // equivalent to var rgx = /^05/; db.c

在我的一个mongodb集合中,我有一个mm/dd/yyyy格式的日期字符串。现在,我想查询“mm”字符串

例如,2016年5月20日和2015年5月4日

我想获取字符串的前2个字符并查询“05”。这样,我得到的结果应该只有2016年5月20日

我怎样才能做到这一点


谢谢

对于正则表达式解决方案,以下内容就足够了

var search = "05",
    rgx = new RegExp("^"+search); // equivalent to var rgx = /^05/;

db.collection.find({ "leave_start": rgx });
测试

另一种选择是使用聚合框架,并利用运算符提取字段的前2个字符,然后运算符将根据上面的新子字符串字段过滤文档:

db.collection.aggregate([
    {
        "$project": {
            "leaves_start": 1,
            "monthSubstring": { "$substr": : [ "$leaves_start", 0, 2 ] }
        }
    },
    { "$match": { "monthSubstring": "05" } }
])

对于正则表达式解决方案,以下内容就足够了

var search = "05",
    rgx = new RegExp("^"+search); // equivalent to var rgx = /^05/;

db.collection.find({ "leave_start": rgx });
测试

另一种选择是使用聚合框架,并利用运算符提取字段的前2个字符,然后运算符将根据上面的新子字符串字段过滤文档:

db.collection.aggregate([
    {
        "$project": {
            "leaves_start": 1,
            "monthSubstring": { "$substr": : [ "$leaves_start", 0, 2 ] }
        }
    },
    { "$match": { "monthSubstring": "05" } }
])

对于正则表达式解决方案,以下内容就足够了

var search = "05",
    rgx = new RegExp("^"+search); // equivalent to var rgx = /^05/;

db.collection.find({ "leave_start": rgx });
测试

另一种选择是使用聚合框架,并利用运算符提取字段的前2个字符,然后运算符将根据上面的新子字符串字段过滤文档:

db.collection.aggregate([
    {
        "$project": {
            "leaves_start": 1,
            "monthSubstring": { "$substr": : [ "$leaves_start", 0, 2 ] }
        }
    },
    { "$match": { "monthSubstring": "05" } }
])

到目前为止,您尝试了什么?我尝试添加了这个“/^[05]{2}/”,它将获得前两个字符串上带有“05”的所有数据。然而,它似乎不起作用。我不确定我是否做错了什么。这是代码:{leaves_start:{$regex:'/^[05]{2}/'}}那么这个呢?{leaves_start:{$regex:'/^05/'}}这意味着您希望leaves_start字段以05开头。到目前为止您尝试了什么?我尝试添加了这个'/^[05]{2}/',它将获得前两个字符串上带有“05”的所有数据。然而,它似乎不起作用。我不确定我是否做错了什么。这是代码:{leaves_start:{$regex:'/^[05]{2}/'}}那么这个呢?{leaves_start:{$regex:'/^05/'}}这意味着您希望leaves_start字段以05开头。到目前为止您尝试了什么?我尝试添加了这个'/^[05]{2}/',它将获得前两个字符串上带有“05”的所有数据。然而,它似乎不起作用。我不确定我是否做错了什么。这是代码:{leaves_start:{$regex:'/^[05]{2}/'}}那么这个呢?{leaves_start:{$regex:'/^05/'}}表示希望leaves_start字段以05开头。