2017-09-16 6 views
4

私は31000枚の書類を受け付けておりますし、コレクションに、私は、ほぼ6ヶ月のデータ正規表現のクエリMongoDBのパフォーマンスの問題

ここ

があるがあり、単一のフィールド、毎日が含まれてMongoDBのコレクションを持っている私のデータは、データベースにどのように見えるか

ここ

{ 
"_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" 
       } 
      ] 
+0

小規模なベンチマークでは良い答えです:https://stackoverflow.com/questions/17942275/speed-up-regex-string-search-in-mongodb –

答えて

1

は、正規表現の先頭に入力アンカー^開始を追加します。

Pattern regex = Pattern.compile("^20-05-2017"); 

あなたの正規表現はアンカーを持っていないので、全体のフィールドはどこにでもそれに日付検索されフィールド内のすべての文字を比較する必要があります。