spring-data-mongodb查询速度为什么如此之慢呢?

发布问题 回首页

spring-data-mongodb查询速度为什么如此之慢呢?

★ 0 成为第一个关注这个问题的人

` Bson bson = Filters.geoWithinCenter(“loc”, 110.29239, 30.2323, 120 / 111000);

FindIterable findIterable = mongoTemplate.getCollection(“test”).find(bson);
MongoCursor iterator = findIterable.iterator();`
我再shlell里面用explain执行发现查询60万条数据也只需要不到1s的样子;但是在java代码里面发现findIterable.iterator()这行代码迭代需要20s时间。速度超级慢。为什么获取游标信息这么慢呢?有没有大神知道该怎么解决这种问题。

我执行explain()发现,索引使用情况好像有些问题。没有出现理想的情况
nReturned=totalKeysExamined & totalDocsExamined
nReturned=1900000 totalKeysExamined =2301000 totalDocsExamined = 2300000

我插入地理位置格式为:loc : { type: “Point”, coordinates: [ -73.97, 40.77 ] }
索引使用情况确实都用到了Fetch+ixscan,不明白没什么扫描文档超过查询结果集这么多,新手不知道是什么造成了这种情况,还请大神能给解惑。

Edited on 8:58 下午
xjiangwei@126.com 在大约 之前 回答了
  • 提问于
  • 回答数1 个
  • 浏览 10 次
  • 最新活跃于

1 个回答1

0
xjiangwei@126.com answered about

请问下您怎么解决的呢?我也遇到这个问题了

问题状态

  • Open

类别

2个参与者

spring-data-mongodb查询速度为什么如此之慢呢?》有13个想法

  1. 谢答,但个人认为不准确,1.mr我觉得不适合实时计算,更贴合后期数据统计需求,2.aggregate必须支持自定义函数,就好像你定义个abc(1,2)一样肯定是计算了,现在的问题是abc(1,2)这个参数我想传个字段进去,比如abc($qty,2)这样….他就不好使了….难道大家没有在aggregate中用字段进行计算的经历么?

发表评论