sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:no se puede usar un cursor para recorrer todos los datos

En general, sí. Si tiene un campo monótono, idealmente un campo indexado, simplemente puede caminar a lo largo de eso. Por ejemplo, si está utilizando campos de tipo ObjectId como clave principal o si tiene una CreatedDate o algo así, simplemente puede usar un $lt consulta, toma un número fijo de elementos, luego vuelve a consultar usando $lt del menor _id o CreatedDate que encontraste en el lote anterior.

Tenga cuidado con el comportamiento monotónico estricto frente al comportamiento monotónico no estricto:es posible que deba usar $lte si las claves no son estrictas, evite hacer las cosas dos veces con los incautos. Desde el _id el campo es único, ObjectIds son siempre estrictamente monótonas.

Si no tiene esa clave, las cosas son un poco más complicadas. Todavía puede iterar 'a lo largo del índice' (cualquier índice, ya sea un nombre, un hash, un UUID, Guid, etc.). Eso funciona igual de bien, pero es difícil hacer instantáneas, porque nunca se sabe si el resultado que acaba de encontrar se insertó antes de comenzar a recorrer o no. Además, cuando se inserten documentos al comienzo del recorrido, estos se perderán.