JavaSpringBootMongoDB花费太多时间检索结果

2024-09-28 22:08:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我的MongoDB只包含3.8k文档,并且大多数字段都已编制索引。此外,我通过的条件也被索引。但是获取这些结果文档需要5分钟以上的时间,总共可能需要2千个

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中的同一查询速度足够快,可以立即得到结果。那个么,司机的问题能解决吗?因为另一个人也抱怨过here,还是我遗漏了什么?谢谢

规格

我使用的是JavaSpringBoot2.2.4.RELEASE,Mongodb


Tags: 文档fieldsdatetimedatebytimemongodbwhere
1条回答
网友
1楼 · 发布于 2024-09-28 22:08:17

我不知道它在@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);

相关问题 更多 >