简体   繁体   English

Java Spring 启动 Mongodb 花费太多时间来检索结果

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

My MongoDB contains only 3.8k documents and most of the fields are indexed.我的 MongoDB 仅包含 3.8k 个文档,并且大部分字段都已编入索引。 Moreover the condition I am passing is also indexed.此外,我通过的条件也被索引。 But it's taking ridiculous 5min+ time to fetch those resulted documents which may be 2k in total.但是获取这些结果文档需要花费 5 分钟以上的时间,这些文档总共可能是 2k。

Java Code: 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 ;

Resulted Query:结果查询:

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

Interestingly the same query in python is fast enough to get results immediately.有趣的是,python 中的相同查询速度足够快,可以立即获得结果。 So, could there by driver issue?那么,驱动程序问题可能存在吗? as one other also has complained here as well OR am I missing something?因为另一个人也在 这里抱怨或者我错过了什么? Thanks!谢谢!

Specs眼镜

I am using Java Spring boot 2.2.4.RELEASE, Mongodb.我正在使用 Java Spring 启动 2.2.4.RELEASE,Mongodb。

I don't know what special it is in @Query but surprisingly using it has reduced the time to few seconds.我不知道@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