В чем разница между методами cursor.count()
и cursor.size()
MongoDB DBCursor
?
Разница между cursor.count() и cursor.size() в MongoDB
Ответ 1
Из Javadoc из Java-драйвера MongoDB, он говорит:
DBCursor.count(): подсчитывает количество объектов, соответствующих запросу. Эта не принимает во внимание лимит/пропуск.
DBCursor.size(): подсчитывает количество объектов, соответствующих запросу. Эта принимает во внимание лимит/пропуск.
Ответ 2
Больше, чем ответ, я хотел бы указать на проблему, с которой наша команда столкнулась с "смешиванием" этих двух.
У нас было что-то вроде этого:
DBCursor cursor = collection.find(query).limit(batchSize);
logger.info("{} items found.", cursor.count());
while (cursor.hasNext()) {
...
}
Оказалось, что после вызова метода cursor.count()
предел был проигнорирован (plase взгляните на этот другой вопрос), мы намеревались узнать, сколько элементов было возвращено запросом, поэтому мы должны были бы вызвать метод cursor.size()
, так как вызов count
имел нежелательный побочный эффект.
Я надеюсь, что это может быть полезно для кого-либо еще, так как было не так просто найти источник проблемы, с которой мы столкнулись.