2016-11-22 148 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- –

相关问题