繁体   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