title: MongoDB Change Streams read changes from past
body: <p>I want to read changes in collections in my database. Now I choose between direct using of oplog and <a href="https://docs.mongodb.com/manual/changeStreams/#change-streams" rel="nofollow noreferrer">Change Streams</a>. I have few question about oplog Change Streams abilities</p>
  <ol>
  <li>How to start read changes from very beginning of oplog using Change Streams?</li>
  </ol>
  <p>Using oplog I can use <code>find()</code> on oplog collection with zero timestamp, but with Change Streams I can only pass <code>resumeAfter</code> and <code>startAfter</code> tokens. When I don't specified cursor options it start read changes from current moment, but in first run I need to start from very beginning.</p>
  <ol start="2">
  <li>What if my changes reader will lag behind oplog and  <code>resumeAfter</code> become outdate?</li>
  </ol>
  <p>From <a href="https://docs.mongodb.com/manual/changeStreams/#resumeafter-for-change-streams" rel="nofollow noreferrer">documentation</a>:</p>
  <blockquote>
  <p>The oplog must have enough history to locate the operation associated with the token or the timestamp, if the timestamp is in the past.</p>
  </blockquote>
  <p>How correctly process this situation?</p>
  <ol start="3">
  <li>Now I nead to read changes from single collection, but in the future I may need to read changes from several collections</li>
  </ol>
  <p>With oplog I can just extend find filter and continue with with timestamp from state. Can I do same with Change Streams?</p>