AcaniUsers從我的iPhone中加載最接近我的MongoDB中的前20名用戶(通過Sinatra在Heroku上)。我想添加一個「加載更多」按鈕,以加載接近我的下20個用戶。請記住,我的位置和用戶在我手機上的位置可能已更改。我正在考慮從Sinatra切換到Node.js並打開WebSocket,所以我可以實時更新用戶在手機上的位置&,但我認爲我應該爲下一次迭代保存這一挑戰。基本上,我應該如何實現負載更多的功能?MongoDB地理空間在HTTP請求之間加載更多
2
A
回答
0
要爲MongoDB中的查詢分頁,您可以使用limit()和skip()的組合。
所以,第一個查詢將是:
your_query.limit(20)
這時如果要加載第二個20(你必須記住第一個查詢地址):
your_query.skip(20 ).limit(20)
順便說一句,我建議你在首位,高於20,並放入緩存你不顯示結果的限制執行查詢。請求時,只需從緩存中獲取它們(您可以將其存儲在用戶會話中)。如果位置發生變化,請重新啓動並重新查詢使緩存無效的數據庫。
0
更多地將它看作是客戶端問題:使用基於當前組的訂閱 - 如果可能,將組編碼爲地理方塊(我認爲是更有效的) - 週期性地(t)執行操作檢查每個用戶的位置,並簡單地將它們與組ID綁定以匹配訂閱
實際上......構建您的訂閱組,只需在所有訂閱者上使用geonear命令 - 構建哈希值您的訂戶和他們的團體 - 每個訂閱者訂閱了一個組和他們自己(針對有針對性的溝通=>表示特定訂戶應該更改訂閱) - 通過res ults i i次數,其中i是更新組中的個人數 - 執行一個操作,該操作檢查j的當前值(特定訂戶的組編號)與新的j值 - 如果發生更改,則通知在subsriber的專用通道 用戶 - 通知同步跟隨用戶調整
類似:
var pageSize;
// assign pageSize in method call
var documents = collection.Find(query);
var max = documents.Size();
for (int i = 0; i == max ; i++)
{
var level = i*pageSize;
if (max/level > 1)
{
documents.Skip(pageSize);
}
else
{
documents.Skip(pageSize).Limit(level);
break;
}
}
:)
相關問題
- 1. MongoDB在$ near和$之間的地理空間差異在
- 2. MongoDB的數組(多鍵+地理空間)
- 3. 地理空間聚類(MongoDB)
- 4. MongoDB地理空間設計
- 5. HTML http請求和XML http請求之間安全處理的區別
- 6. 在PHP MongoDB的地理空間查詢
- 7. 請求線程是否在http請求之間重用?
- 8. 容器之間的Docker HTTP請求
- 9. jsessionID不保留jmeter http請求之間
- 10. HTTP請求之間的休眠會話
- 11. 兩個http請求之間的區別
- 12. 如何在PHP請求處理空間
- 13. 使用單個Webview加載多個URL:是否更好地停止請求之間的加載?
- 14. HTTP請求佔用過多的時間
- 15. MongoDB的地理空間 - 搜索指向
- 16. Perl MongoDB地理空間查詢
- 17. MongoDB地理空間查詢$ not
- 18. $ $附近的mongodb放鬆地理空間
- 19. MongoDB的地理空間查詢
- 20. MongoDB - 地理空間交叉表現
- 21. MongoDB的地理空間架構
- 22. MongoDB的地理空間草堆索引
- 23. MongoDB - 地理空間距離問題
- 24. C#中的MongoDB地理空間索引#
- 25. MongoDB的地理空間查詢
- 26. 如何在barh()中的Y點之間添加更多空間?
- 27. 限制在兩個UIView之間添加更多空間
- 28. Java API/Google Chrome請求之間的HTTP請求差異?
- 29. 遠程處理和Wcf之間Http請求差異的數量
- 30. 在Python中請求之間的時間?
如果你的位置或朋友的位置可能會改變,它實際上是一個「重新掃描「或」重新加載「......前20名可能已經退出前20名你想第一個查詢的下一個20到數據庫? – ALoR 2011-04-22 18:04:55
我想知道如何做。對於「重新加載」,我是否會做同樣的請求,但限制爲40而不是20?我如何獲得第一個查詢的下20個? – ma11hew28 2011-04-24 01:31:42