Podle Sammaye to nevypadá, že by existoval „správný“ způsob, jak to udělat. Mým řešením bylo vytvořit sekvence, jak je uvedeno na mongo webu a jednoduše přidat pole 'seq' ke každému záznamu v mé sbírce. Nyní mám jedinečné pole, které lze spolehlivě seřadit a aktualizovat.
Zde je důležité spolehlivě třídit. Chtěl jsem jen třídit podle automaticky generovaného _id, ale rychle jsem si uvědomil, že přirozené pořadí NENÍ totéž jako vzestupné pořadí pro ObjectId (z tuto stránku vypadá to, že hodnota řetězce má přednost před hodnotou objektu, která odpovídá chování, které jsem pozoroval při testování). Také je zcela možné, aby byl záznam na disku přemístěn, což činí přirozený řád nespolehlivým pro třídění.
Nyní se tedy mohu dotazovat na záznam s nejmenším „seq“, který již NEBYL aktualizován, aby získal inkluzivní výchozí bod. Dále se zeptám na záznamy s 'seq' větším než je můj výchozí bod a přeskočím (je důležité přeskočit, protože 'seq' může být řídké, pokud odstraníte dokumenty atd...) počet záznamů, které chci aktualizovat. Dejte na tento dotaz limit 1 a máte nezahrnutý koncový bod. Nyní mohu vydat aktualizaci s dotazem 'updated' =0, 'seq'>=můj počáteční bod a
Zde jsou znovu kroky:
Docela bolestivé, ale dá to práci.