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

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


person Byter    schedule 09.08.2012    source источник


Ответы (2)


В Javadoc драйвера MongoDB Java говорится: :

DBCursor.count() : подсчитывает количество объектов, соответствующих запросу. При этом не учитывается лимит/пропуск.

DBCursor.size() : подсчитывает количество объектов, соответствующих запросу. При этом учитывается лимит/пропуск.

person Parvin Gasimzade    schedule 09.08.2012
comment
Оба кажутся одинаковыми... Тем не менее, почему они ввели 2 таких метода? Есть ли разница в производительности между ними? - person Byter; 09.08.2012
comment
Я подозреваю, что разница заключается в does not take и does take лимите/пропуске. - person Peter Lawrey; 09.08.2012
comment
Они не одинаковы. Один принимает во внимание ограничение/пропуск, а другой нет. - person Parvin Gasimzade; 09.08.2012
comment
@RemonvanVliet Иногда тонко теряется, когда чувствуешь себя перегруженным информацией. ;) - 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 имел нежелательные побочные эффекты. эффект.

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

person David Chaverri    schedule 31.10.2015
comment
Вы говорите, что cursor.count() не только игнорировал ограничение, как задокументировано, но фактически удалил ограничение из курсора, поэтому последующие операции, такие как итерация курсора, ведут себя так, как если бы ограничение не было установлено? - person dan carter; 17.06.2016