mongoTemplate查詢大資料過慢

2021-08-17 05:56:19 字數 811 閱讀 4846

先上兩段**

**一

query query = new query();

queryafter.addcriteria(criteria.where("id").in(idlist));

queryafter.addcriteria(criteria.where("time").gte(starttime).lte(endtime));

listlists = mongotemplate.find(querybefore,testentity.class);

**二

dbobject query1 = new basicdbobject(); //setup the query criteria 設定查詢條件

query1.put("id", new basicdbobject("$in", idlist));

dbcursor dbcursor =mongotemplate.getcollection("testentity").find(query1);

listlist=new arraylist<>();

while (dbcursor.hasnext())

邏輯很簡單,從testentity集合中根據id列表和開始結束時間進行文件篩選,但是在大資料量下,差別太大了!

比如testentity集合有25萬條文件,查詢出4萬條文件轉換成testentity實體類集合,第一種直接轉換成實體要80秒,而第二種耗時1秒不到!我一度還以為是mongo的問題,後來才定位到是**的坑!

所以資料量大的時候還是用原生查詢手動對映成實體模擬較快!

MongoTemplate聚合查詢

表結構 import org.springframework.data.domain.sort import org.springframework.data.domain.sort.direction import org.springframework.data.domain.sort.orde...

mongoTemplate聚合操作

準備資料 customer 集合,資料型別如下 只是部分資料,資料量太多就不一一列出 1 通過mongotemplate.group方法 public groupbyresultsgroup string inputcollectionname,groupby groupby,classentity...

mongotemplate 動態query拼接

在用mongodb的時候進行分詞搜尋 使用ik分詞器對查詢條件進行分詞比如 男士9分休閒褲。使用mongotemplate 對分詞結果進行查詢。query query newquery criteria criteria newcriteria keywords是需要查詢的內容,對keywords進...