【发布时间】:2017-03-06 11:00:56
【问题描述】:
我在使用 MongoDB 时可能遇到过这样的问题。我在一个集合中有 860000 个文档,并且有 500 个这样的集合。我有 3 列,第一个和第二个字段是包含 10 个元素的 Array 类型,第三个是保留 currentTimeMillis 的 Int64 类型。当我从一张表中查询 1000 个文档时,大约需要 2500 毫秒。但是,当我执行相同的查询时,只获取两个字段的第一个元素(对数组使用 $slice 运算符)(彼此包含 10 个元素),大约需要 2000 毫秒。这看起来很奇怪。 MongoDB 位于远程主机中,因此我从网络中获取的数据大约小 10 倍,但花费的时间几乎相同。有什么想法吗?
【问题讨论】:
-
你有这个字段的索引吗?
-
是的。时间字段上有索引。我使用 mongo java 驱动程序查询。在 java 方面,我对 currentTimeMillis 使用 long 类型。但在 mongoDB 中,这个字段是 Int64。这会导致不使用索引吗,我不知道。这是这个问题的另一个问题。
-
解释查询,它将为您提供有关索引使用情况的信息。
-
找不到解释方法。
-
collection.find(whereQuery).projection(fieldQuery);这是java端的查询。
标签: mongodb performance find slice projection