query mongo java mongodb mongodb-java mongo-java

java - query - Diferencia entre cursor.count() y cursor.size() en MongoDB



query mongodb java (2)

Desde el Javadoc del MongoDB Java Driver , dice:

DBCursor.count() : cuenta el número de objetos que coinciden con la consulta. Esto no tiene límite / saltar en consideración.

DBCursor.size() : cuenta el número de objetos que coinciden con la consulta. Esto tiene límite / saltar en consideración.

¿Cuál es la diferencia entre los cursor.count() y cursor.size() del DBCursor de MongoDB?


Más que una respuesta, me gustaría señalar un problema que nuestro equipo enfrentó al "mezclar" estos dos.

Tuvimos algo como esto:

DBCursor cursor = collection.find(query).limit(batchSize); logger.info("{} items found.", cursor.count()); while (cursor.hasNext()) { ... }

Resultó que después de llamar al método cursor.count() , se ignoró el límite (por favor, eche un vistazo a this otra pregunta), queríamos saber cuántos elementos devolvió la consulta, por lo que deberíamos haber llamado el cursor.size() Método en su lugar, ya que llamar al count uno tuvo un efecto colateral no deseado.

Espero que esto pueda ser útil para cualquier otra persona, ya que no fue tan fácil encontrar el origen del problema que enfrentábamos.