mongo查询优化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010430495/article/details/78395452

经过多次调整,java查询mongo我们采取了分级查询。首先我定义一下下面提到的名词

条件元组(object ):查询条件的元组,比如object={"keyValue":"5***********0024","keyType":"A"}

实际查询条件(arr): 外部接口调用我们接口会传递不定数量的条件元组,比如arr=[{"keyValue":"5***********0024","keyType":"A"},{"keyValue":"5***********0024","keyType":"A"},{"keyValue":"5***********0024","keyType":"A"}],这些元组都是OR条件。查询条件数量1-500+不等

条件元组数量(size): 实际查询条件的数量 size=arr.length

-----------------------------------------------------分隔符-----------------------------------------------------------------

keyType和keyValue我们建立了联合索引,每次查询筛选条件有keyType、keyValue、date(没有索引)

if(size<5){

逐条object 查询,查询条件只有keyType和keyValue ;

对每一次查询出的数据在内存中根据date进行筛选;

将筛选后的结果添加到结果List中

}else if(size>=5&&size<=50){

将所有的object组成Or条件查询,比如{or:[{"keyValue":"5***********0024","keyType":"A",date:'2017-09-17'},{"keyValue":"5***********0024","keyType":"A",,date:'2017-09-17'}},{"keyValue":"5***********0024","keyType":"A",date:'2017-09-17'}}]}

执行一次查询

}else if(size>50){

用多线程查询,50条分为一个线程,每个线程查询方式和第二种情况一致

}


这就是我们现在改造的结果,这个结果是多次优化后的结果。

猜你喜欢

转载自blog.csdn.net/u010430495/article/details/78395452