【问题标题】:Get nth item from a collection从集合中获取第 n 个项目
【发布时间】:2015-11-01 01:00:33
【问题描述】:

我在mongodb的学习阶段。

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

换句话说,对于上述情况,我需要访问我的集合中的第 14 个文档来提供它。

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

感谢任何想法。

【问题讨论】:

标签: mongodb


【解决方案1】:

在您的文档中添加一个字段,告诉您这是哪一步,为该字段添加一个索引并通过它进行查询。

文档:

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

索引:

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

查询:

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

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

例外:Capped Collections 保证插入顺序保持一致。但是很少有这些有用的用例,我认为您在这里没有这样的用例。

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 2011-01-19
    相关资源
    最近更新 更多