跳过一个MongoDB固定集合。

5
我在mongodb中有一个非常大的封顶集合。考虑到封顶集合结构是可预测的(即排序是预定义的,内存占用量是预定义的等等),是否有更好的方法来获取最新插入的游标,而不是迭代?
换句话说,我现在正在做的是获取我的集合大小(n),然后创建一个游标,将skip=n-1设置为将我放在集合的末尾。然后我在游标上进行迭代,并处理集合的所有新添加项。
这种方法的问题是我的集合非常庞大。假设有1100万条记录那需要20分钟才能跳过。这意味着当我的游标开始发出数据时,它已经落后了20分钟。

1
我有同样的问题。我正在尝试追踪我们当前有1.8亿个文档的oplog。可追踪的光标可能需要几个小时才能初始化。而且我不能向oplog添加索引。我仍在寻找一个合适的选项。目前,我所做的是使用大量限制对$natural:-1进行排序,并向后读取尾部,直到找到先前读取的最后一个文档,而不使用可追踪的光标。 - Marquez
2个回答

1
你尝试过对集合进行索引并使用$gt吗?这样应该会更快,尽管索引会对集合的写入速度产生一定影响。

在几乎所有情况下,这都是正确的解决方案,但对于更新频率极高的集合来说,它会影响性能。在我的情况下,我正在处理操作日志,所以无法这样做。 - Oren Mazor

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

2
我相信只有 $natural:1 是允许用于可追踪游标的。 - Oren Mazor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接