对于一些Morphia查询asList
,我们最终遇到了cursor not found exceptions
,我发现了hint on SO,这可能会消耗大量内存.
现在我想了解更多关于背景的信息:sombody能解释一下(英语)游标(MongoDB)到底是什么吗?为什么它能一直开着或者找不到?
文档中的光标如下所示:
指向查询结果集的指针.客户机可以遍历光标来检索结果.默认情况下,游标在不活动10分钟后超时
但这并不是很能说明问题.也许为查询结果定义batch
会有所帮助,因为documentation also states:
MongoDB服务器批量返回查询结果.批处理大小将不会超过BSON文档的最大大小.对于大多数查询,第一批返回101个文档,或者刚好足够超过1MB的文档.后续批处理大小为4兆字节.[...] 对于包含没有索引的排序操作的查询,服务器必须加载内存中的所有文档,以便在返回任何结果之前执行排序.
注意:在我们所讨论的查询中,我们根本不使用sort语句,但也不使用limit
和offset
.