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