MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB:non è possibile utilizzare un cursore per scorrere tutti i dati

In generale, sì. Se hai un campo monotono, idealmente un campo indicizzato, puoi semplicemente percorrerlo. Ad esempio, se stai utilizzando campi di tipo ObjectId come chiave primaria o se hai un CreatedDate o qualcosa del genere, puoi semplicemente usare un $lt interroga, prendi un numero fisso di elementi, quindi interroga di nuovo usando $lt del più piccolo _id o CreatedDate che hai incontrato nel batch precedente.

Fai attenzione al comportamento monotono rigoroso rispetto al comportamento monotono non rigoroso:potresti dover usare $lte se le chiavi non sono rigide, evita di fare le cose due volte sui duplicati. Dal momento che il _id il campo è univoco, ObjectIds sono sempre rigorosamente monotoni.

Se non hai una tale chiave, le cose sono un po' più complicate. Puoi ancora scorrere "lungo l'indice" (qualunque indice, sia esso un nome, un hash, un UUID, Guid, ecc.). Funziona altrettanto bene, ma è difficile fare snapshot, perché non sai mai se il risultato che hai appena trovato è stato inserito prima di iniziare ad attraversare, oppure no. Inoltre, quando i documenti vengono inseriti all'inizio dell'attraversamento, quelli andranno persi.