簡體   English   中英

Java Spring 啟動 Mongodb 花費太多時間來檢索結果

[英]Java Spring boot Mongodb taking too much time to retrieve results

我的 MongoDB 僅包含 3.8k 個文檔,並且大部分字段都已編入索引。 此外,我通過的條件也被索引。 但是獲取這些結果文檔需要花費 5 分鍾以上的時間,這些文檔總共可能是 2k。

Java 代碼:

Query query = query(where(DATE_TIME).gte(startDateLocal).andOperator(where(DATE_TIME).lte(endDateLocal)))
        .with(Sort.by(Order.by("_id")));
query.fields().exclude(CarMakerDetailedSpecs);
addDefaultFilter(query);
List<CarMaker> CarMakerItems = mongoTemplate.find(query, CarMaker.class);

return CarMakerItems ;

結果查詢:

{ "dateTime" : { "$gte" : { "$date" : 1484247600000}}, "$and" : [{ "dateTime" : { "$lte" : { "$date" : 1580324400000}}}], "carMaker" : { "$in" : ["Toyota", "Honda"]}} fields: Document{{carMaker.detailedSpecs=0}}

有趣的是,python 中的相同查詢速度足夠快,可以立即獲得結果。 那么,驅動程序問題可能存在嗎? 因為另一個人也在 這里抱怨或者我錯過了什么? 謝謝!

眼鏡

我正在使用 Java Spring 啟動 2.2.4.RELEASE,Mongodb。

我不知道@Query有什么特別之處,但令人驚訝的是,使用它可以將時間縮短到幾秒鍾。

@Query(value= "{" +
        "  \"dateTime\": {" +
        "    \"$gte\": {" +
        "      \"$date\": ?0" +
        "    }" +
        "  }," +
        "  \"$and\": [" +
        "    {" +
        "      \"dateTime\": {" +
        "        \"$lte\": {" +
        "          \"$date\": ?1" +
        "        }" +
        "      }" +
        "    }" +
        "  ]," +
        "  \"carMaker\": {" +
        "    \"$in\": [" +
        "      \"Toyota\"," +
        "      \"Honda\"" +
        "    ]" +
        "  }" +
        "}",
        fields = 
        "  {" +
        "    carMaker.detailedSpecs=0" +
        "  }" +
        );
List<CarMaker> findAllCarsByStartAndEndDate(LocalDate startDateLocal, LocalDate endDateLocal);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM