Laut Sammaye sieht es nicht so aus, als gäbe es einen "richtigen" Weg, dies zu tun. Meine Problemumgehung bestand darin, einen sequence wie auf der Mongo-Site beschrieben und fügen Sie einfach jedem Datensatz in meiner Sammlung ein 'seq'-Feld hinzu. Jetzt habe ich ein eindeutiges Feld, das zuverlässig sortierbar ist, um aktualisiert zu werden.
Zuverlässig sortierbar ist hier wichtig. Ich wollte gerade nach der automatisch generierten _id sortieren, aber mir wurde schnell klar, dass die natürliche Reihenfolge NICHT dasselbe ist wie die aufsteigende Reihenfolge für ObjectIds (von diese Seite es sieht so aus, als hätte der Zeichenfolgenwert Vorrang vor dem Objektwert, der dem Verhalten entspricht, das ich beim Testen beobachtet habe). Außerdem ist es durchaus möglich, dass ein Datensatz auf der Festplatte verschoben wird, wodurch die natürliche Reihenfolge für das Sortieren unzuverlässig wird.
Jetzt kann ich also nach dem Datensatz mit dem kleinsten 'seq' fragen, der noch NICHT aktualisiert wurde, um einen inklusiven Startpunkt zu erhalten. Als nächstes frage ich nach Datensätzen mit 'seq' größer als mein Startpunkt und überspringe die Anzahl der Datensätze, die ich aktualisieren möchte (es ist wichtig zu überspringen, da 'seq' spärlich sein kann, wenn Sie Dokumente entfernen usw.). Legen Sie für diese Abfrage ein Limit von 1 fest, und Sie haben einen nicht inklusiven Endpunkt. Jetzt kann ich ein Update mit einer Abfrage von 'updated' =0, 'seq'>=mein Startpunkt und
Hier sind die Schritte noch einmal:
Ziemlich schmerzhaft, aber es erledigt die Arbeit.