2016-11-22 84 views
0

我分頁通過一個非常大的文件集合。我想知道這是否是一種有效的在mongoDB中使用_id的分頁方法。我擔心的是,每次查詢時,在返回結果之前,需要對整個id集合進行排序。我看到這個文檔關於索引優化查詢,但這會適用於我,因爲我查詢_id,我會認爲已經索引?有沒有什麼辦法來優化這個MongoDB查詢在Node.js分頁

分頁功能:

function paginateDocs(currId, docsPerPage) { 
    const query = currId ? { _id: { $gt: currId } } : {}; 
    const queryOptions = { limit: usersPerPage, sort: '_id' }; 
    return mongo.find(query, queryOptions).toArray(); 
} 
+0

它應該選取默認索引「{_id:1}」,然後在btree的'> currId'範圍內查找文檔。你可以粘貼輸出'mongo.explain(1).find(查詢,選項)' – hyades

+0

我不能在生產環境中執行此操作,所以我認爲這不會有用嗎? –

回答

0

您可以使用cursor.hint(指數)在這裏你可以定義索引的所有索引上要排序什麼。請參閱此鏈接 - > https://docs.mongodb.com/manual/reference/method/cursor.hint/

+0

爲什麼我想重寫默認索引?是不是默認索引_id? –

+0

是的,所以你可以做的是,因爲你有很多文件,排序操作本身對你來說非常重。您可以嘗試在redis中保留_ids,其中包含數據結構存儲,用作數據庫,緩存。這會讓你的查詢快得多。 –

+0

這個鏈接會給你更多的信息在redis- –

相關問題