0

我有一系列帖子(请参阅伪 json :-)):

[
  {"title":"First","created":"2012-10-04 01:00:00"},
  {"title":"Second","created":"2012-10-04 03:30:00"},
  {"title":"Third","created":"2012-10-02 02:00:00"}
]

我在“2012-10-04”帖子页面,我想知道是否有旧帖子,只是为了显示“下一页”按钮。

我可以考虑这样的查询:

db.posts.find({"created":{$lt:ISODate("2012-10-04")} }).limit(1);

我仍然必须尝试它,但我认为它会起作用......实际上我的问题是:

它的性能如何?它会以与集合中数十亿个文档相同的速度运行吗?

4

1 回答 1

1

假设您将根据需要对数十亿个集合进行分片,那么“已创建”的索引应该可以相对较好地扩展。无论您执行哪种查询,它们都将花费更长的时间来处理更大的数据集、索引与否。只是 b-tree walks 的性能配置文件明显优于原始表扫描。

您的查询是一个开放式范围查询,在您的情况下实际上是理想的,因为如果它找到任何早于指定日期的文档,它就可以返回。

简而言之,是的,这将充分发挥作用,并且可以通过分片进行扩展。

于 2012-10-12T13:19:14.707 回答