在我的一个mongodb集合中,我有一个日期字符串,其格式为mm / dd / yyyy。现在,我想查询'mm'字符串。
示例,05/20/2016和04/05/2015。
我想得到字符串的前2个字符并查询'05'。有了这个,我得到的结果应该只是05/20/2016。
我怎样才能做到这一点?
谢谢!
答案 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" } }
])