从集合中获取第n项

时间:2015-08-08 18:19:30

标签: mongodb

我正处于mongodb的学习阶段。

我有一个测试网站项目,故事的每一步都是domain.com/step 例如,通过domain.com/14

访问步骤14

换句话说,对于上述情况,我需要访问我的收藏中的第14个文件来提供服务。

到目前为止,我一直在使用find().skip(n).limit(1)方法返回n文档,但是当有太多文档需要跳过时,它变得非常慢。所以我需要一种更有效的方法来获取我的集合中的n文档。

任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:3)

在文档中添加一个字段,告诉您它是哪一步,为该字段添加索引并按其查询。

文件:

{
     step:14
     text:"text",
     date:date,
     imageurl:"imageurl"
}

指数:

db.collection.createIndex({step:1});

查询:

db.collection.find({step:14});

依靠集合中的自然顺序不仅缓慢(如你所知),它也是不可靠的。当您开始一个新的集合并插入一堆文档时,您通常会按照插入它们的顺序找到它们。但是当您在插入文档后更改文档时,可能会发生订单以不可预测的方式搞乱。所以永远不要依赖插入顺序。

例外:Capped Collections保证广告订单保持一致。但是很少有用例,这些用法非常有用,而且我认为你没有这种情况。