Wie verschiebe ich einen tailable Cursor mit awaitdata zum Ende, damit ich nur neue Updates erhalte

Ich versuche, das MongoDB-Oplog mit dem node.js-Treiber zu überwachen, und es funktioniert theoretisch, aber es hat ziemlich viel Hochlaufzeit, da es die gesamte Sammlung zu durchsuchen scheint. Ich habe dies in den MongoDB-Dokumenten gefunden:

Da tailable Cursors keine Indizes verwenden, kann der anfängliche Scan für die Abfrage teuer sein. Nach anfänglichem Erschöpfen des Cursors sind spätere Abfragen der neu hinzugefügten Dokumente jedoch kostengünstig.

Gibt es eine Möglichkeit, den Cursor schnell zu "erschöpfen", um mit dem Tailing zu beginnen? Es scheint mir, dass die Meteor-Leute das gelöst haben, aber ich habe Probleme, den Unterschied zum Lesen ihres Codes zu verstehen. Das habe ich aktuell:

var cursorOptions = {
    tailable: true,
    awaitdata: true,
    numberOfRetries: -1
};

var oplogStream = oplogDb.collection('oplog.rs').find(
    {
        ns: { $regex : /^dbname\./ },
        op: "i",
        ts: { $gt: lastEntry.ts } 
    },
    cursorOptions
).sort({$natural: -1}).stream();

oplogStream.on('data', publishDocument);

oplogStream.on('end', function() {
    log.error("received unexpected end event from oplog watcher.");
});

Antworten auf die Frage(1)

Ihre Antwort auf die Frage