2012-04-11 43 views
4

我在MongoDB中有一个非常大的加盖集合。考虑到封顶的集合结构是可预测的(即,预定义了排序,内存占用是预定义的,等等),有没有更好的方法来获取插入最新项目而不是迭代的游标?跳过mongo加盖集合

换句话说,我现在正在做的是获取我的集合(n)的大小,然后创建一个设置skip = n-1的光标,使我处于集合的末尾。然后我遍历游标并处理集合中的所有新增内容。

这种方法的问题是我的收藏是巨大的。可以说11米的记录。需要20分钟才能跳过。这意味着当我的光标开始发射数据时,它会落后20分钟。

+1

我有同样的问题。我正在试图使我们的oplog目前拥有1.8亿个文档。可拖动的光标可能需要几个小时才能初始化。我不能在oplog上添加索引。我仍然在寻找一个体面的选择。现在我正在做的是对$ natural:-1进行排序,然后向后读尾,直到找到前一个文档读取为止,而不是使用可拖动的游标。 – Marquez 2013-09-25 00:56:54

回答

1

尝试db.cappedCollection.find()。limit(1).sort({$ natural:-1})。

+1

我相信只有$ natural:1才可用于可用游标的游标 – 2012-04-16 05:01:42

1

您是否试过索引集合并使用$ gt - 尽管索引对写入集合的速度会有一些影响,但这应该会更快。

+0

在几乎所有情况下,这都是正确的解决方案,但是在更新集合非常高的情况下,它会真正影响性能。就我而言,我正在研究oplog,所以我不能这样做。 – 2012-04-23 14:01:26