Regex Mongodb正则表达式查询字符串的前2个字符
在我的一个mongodb集合中,我有一个mm/dd/yyyy格式的日期字符串。现在,我想查询“mm”字符串 例如,2016年5月20日和2015年5月4日 我想获取字符串的前2个字符并查询“05”。这样,我得到的结果应该只有2016年5月20日 我怎样才能做到这一点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
谢谢 对于正则表达式解决方案,以下内容就足够了
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开头。