Mongodb Regex查询字符串的前2个字符

时间:2016-05-20 08:38:02

标签: regex mongodb

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

示例,05/20/2016和04/05/2015。

我想得到字符串的前2个字符并查询'05'。有了这个,我得到的结果应该只是05/20/2016。

我怎样才能做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:4)

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

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

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

<强>测试

var leave_start = "05/06/2016",
    test = leave_start.match(/^05/);
console.log(test); // ["05", index: 0, input: "05/06/2016"]
console.log(test[0]); // "05"

var search = "05",
    rgx = new RegExp("^"+search),
    leave_start = "05/12/2016";
var test = leave_start.match(rgx);
console.log(test); // ["05", index: 0, input: "05/06/2016"]
console.log(test[0]); // "05"

另一种方法是使用聚合框架并利用 $substr 运算符来提取字段的前2个字符,然后 $match < / strong>运算符将根据上面的新子字符串字段过滤文档:

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