Подтвердить что ты не робот

Разница между cursor.count() и cursor.size() в MongoDB

В чем разница между методами cursor.count() и cursor.size() MongoDB DBCursor?

4b9b3361

Ответ 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 имел нежелательный побочный эффект.

Я надеюсь, что это может быть полезно для кого-либо еще, так как было не так просто найти источник проблемы, с которой мы столкнулись.