我有一個應用程序,用戶正在對mongo數據庫運行地理空間查詢。該查詢可以返回數千個結果(約50k)。這些結果然後通過websocket傳輸到客戶端。但是,用戶可以中止結果集中的請求並執行新的查詢。用戶會頻繁地以每分鐘幾次的順序開始,中止和重新啓動請求。有時他們甚至每隔幾秒就取消/重啓。取消正在運行的查詢
問題是,當用戶中止請求時,如何取消服務器上的查詢,以便它不會繼續捆綁資源迴流數千個不需要的結果?我目前在遊標上調用了destroy()
,但並不清楚這實際上是否停止了在服務器上執行的查詢。
這種情況下的最佳做法是什麼?
已經有代碼取消通過websocket向客戶端發送結果(與您的建議非常相似)。我的問題特別針對在MongoDB層取消查詢執行(以及後續的客戶端流式傳輸)。 – herbrandson
@herbrandson - 然後向我們展示您正在討論的特定數據庫代碼以及控制何時運行的排序代碼。有關代碼的問題需要包含相關的代碼。 – jfriend00