sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB:nelze použít kurzor k iteraci přes všechna data

Obecně ano. Pokud máte monotónní pole, ideálně indexované pole, můžete po něm jednoduše chodit. Pokud například používáte pole typu ObjectId jako primární klíč nebo pokud máte CreatedDate nebo tak něco, můžete jednoduše použít $lt dotaz, vezměte pevný počet prvků a poté dotaz znovu pomocí $lt nejmenšího _id nebo CreatedDate se kterými jste se setkali v předchozí dávce.

Dávejte pozor na přísné monotónní chování vs. nepřísné monotónní chování:Možná budete muset použít $lte pokud klíče nejsou přísné, zabraňte tomu, abyste na dupech dělali věci dvakrát. Protože _id pole je jedinečné, ObjectIds jsou vždy přísně monotónní.

Pokud takový klíč nemáte, věci jsou trochu složitější. Stále můžete iterovat „podle indexu“ (bez ohledu na index, ať už je to název, hash, UUID, Guid atd.). To funguje stejně dobře, ale je těžké udělat snímek, protože nikdy nevíte, zda výsledek, který jste právě našli, byl vložen předtím, než jste začali procházet, nebo ne. Pokud jsou dokumenty vloženy na začátek průchodu, budou také vynechány.




  1. mongodb - provést dávkový dotaz

  2. Map-Reduce pro spojení dat (MongoDb)

  3. Jak aktualizovat a upsert více dokumentů v MongoDB pomocí C# Drivers

  4. Zesměšňovat databázi v node.js?