我有一个应用程序,用户正在对mongo数据库运行地理空间查询。该查询可以返回数千个结果(约50k)。这些结果然后通过websocket传输到客户端。但是,用户可以中止结果集中的请求并执行新的查询。用户会频繁地以每分钟几次的顺序开始,中止和重新启动请求。有时他们甚至每隔几秒就取消/重启。取消正在运行的查询
问题是,当用户中止请求时,如何取消服务器上的查询,以便它不会继续捆绑资源回流数千个不需要的结果?我目前在游标上调用了destroy()
,但并不清楚这实际上是否停止了在服务器上执行的查询。
这种情况下的最佳做法是什么?
已经有代码取消通过websocket向客户端发送结果(与您的建议非常相似)。我的问题特别针对在MongoDB层取消查询执行(以及后续的客户端流式传输)。 – herbrandson
@herbrandson - 然后向我们展示您正在讨论的特定数据库代码以及控制何时运行的排序代码。有关代码的问题需要包含相关的代码。 – jfriend00