java mongo 正则_java – 正则表达式查询MongoDB性能问题

我有包含单个字段的

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");

因为你的正则表达式没有锚,所以在整个字段中搜索日期中的任何日期,这需要比较字段中的每个字符.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值