Recientemente he comenzado a probar MongoDB a través de shell y a través de PyMongo. Me he dado cuenta de que devolver un cursor e intentar iterar parece obstaculizar la iteración real. ¿Hay alguna manera de devolver más de un documento durante la iteración?PyMongo - iteración de cursor
pseudo código:
for line in file:
value = line[a:b]
cursor = collection.find({"field": value})
for entry in cursor:
(deal with single entry each time)
Lo que espero hacer es algo como esto:
for line in file
value = line[a:b]
cursor = collection.find({"field": value})
for all_entries in cursor:
(deal with all entries at once rather than iterate each time)
He intentado usar batch_size() según this question y cambiando el valor de todas las hasta 1000000, pero no parece tener ningún efecto (o lo estoy haciendo mal).
Cualquier ayuda es muy apreciada. ¡Se fácil con este novato de Mongo!
--- EDITAR ---
Gracias Caleb. Creo que ha señalado lo que realmente estaba tratando de preguntar, que es este: ¿hay alguna manera de hacer una especie de collection.findAll()
o tal vez comando, como existe con el módulo cx_Oracle? El problema no es almacenar los datos, sino recuperarlos de Mongo DB lo más rápido posible.
Por lo que puedo decir, la velocidad a la que me son devueltos los datos es dictada por mi red ya que Mongo tiene que buscar de forma individual cada registro, ¿correcto?
Solo puede devolver 1 registro por iteración. El uso del método 'batch_size' le dice al cursor internamente cuántos registros recuperar a la vez. Entonces, si la iteración (y no la obtención) es el cuello de la botella, podría intentar una comprensión de la lista. Quiero decir que hay un límite de memoria interna de 4 MB en el cursor para los registros obtenidos. – cpburnz
Tengo exactamente el mismo problema. Soy nuevo en mongo (y python para el caso). Creo que todas las sugerencias son esencialmente equivalentes en el sentido de que esas diversas funciones de python todavía se conectan con mongo de la misma manera, causando exactamente el mismo resultado cada vez. O, en otras palabras, mongo no puede distinguir entre ninguno de estos enfoques; en lo que a él concierne, hizo la petición find() y luego el cursor pidió "n" veces. – Landon
@ Valdog21, esto fue hace más de un año, ¿cómo resolviste esto? – Landon