我有包含单个字段的
Mongodb集合,每天我收到31000个文档,在集合中我有近6个月的数据
以下是我的数据在数据库中的样子
{
"_id" : ObjectId("59202aa3f32dfba00d0773c3"),
"Data" : "20-05-2017 18:38:13 SYSTEM_000_00_SAVING ",
"__v" : 0
}
{
"_id" : ObjectId("59202aa3f32dfba00d0773c4"),
"Data" : "20-05-2017 18:38:13 SyTime_000_09_00:00 ",
"__v" : 0
}
这是我的查询代码
DBObject query = new BasicDBObject();
Pattern regex = Pattern.compile("20-05-2017");
query.put("Data", regex);
我创建了索引,但仍然很慢
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "NOB_SRB.fdevices"
},
{
"v" : 1,
"unique" : true,
"key" : {
"Data" : 1.0
},
"name" : "Data_1",
"ns" : "NOB_SRB.fdevices"
}
]
最佳答案 将一个输入锚的开头^添加到正则表达式的开头:
Pattern regex = Pattern.compile("^20-05-2017");
因为你的正则表达式没有锚,所以在整个字段中搜索日期中的任何日期,这需要比较字段中的每个字符.