mongodb封顶的集合从偏移量消耗

时间:2018-08-16 08:46:05

标签: mongodb capped-collections

我们正在考虑将MongoDB上限的集合用作我们的fifo队列。 我们的要求如下:

  1. 消息的处理应按插入顺序进行
  2. 任何消息都不会丢失/跳过
  3. 我们应该能够从特定的偏移量开始消费

但是我们面临以下问题: 上限集合保证按插入顺序读取。但是,不能保证_id是单调的。 这意味着,如果有多个生产者,则会发生以下情况:

[
  ...
  { 
    _id: 5b72f12599757c9e26c0946b,
    ...
  },
  { 
    _id: 5b72f12599757c9e26c0946d,
    ...
  },
  { 
    _id: 5b72f12599757c9e26c0946c,
    ...
  },
  { 
    _id: 5b72f12599757c9e26c0946e,
    ...
  },
  ...
]

这意味着如果我们开始使用以下代码进行消费:

const cursor = collection
  .find({ _id: { $gt: "5b72f12599757c9e26c0946d" } })
  .tailable()
  .cursor();

然后将跳过带有5b72f12599757c9e26c0946c的消息。

所以我的问题如下:

  1. 是否可以保证上限集合上的单调id?
  2. 是否可以从特定偏移量开始消耗而无需 跳过_id乱序的邮件?
  3. 我们错过了什么吗?

谢谢。

0 个答案:

没有答案