3

Возник вопрос: какое максимальное количество значений, которые можно поместить в $in в mongo?

{ $in: [<value1>, <value2>, ... <valueN> ] }
andreycha
  • 25,167
  • 4
  • 46
  • 82
Dmitry
  • 31
  • А какие причины считать, что оно вообще ограничено? – Qwertiy Jun 11 '15 at 10:11
  • Нигде не описано, либо меня в гугле забанили. Но узнать надо бы. – Dmitry Jun 11 '15 at 10:37
  • Запустить и проверить - совсем не вариант? – Qwertiy Jun 11 '15 at 10:38
  • Логично, что если бы был вариант - вопрос не был бы задан. Если кроме припираний нечего ответить - не надо дурить голову. – Dmitry Jun 11 '15 at 10:53
  • Если бы мне было что ответить, то я бы написал ответ, а не комментарий ;) – Qwertiy Jun 11 '15 at 16:02
  • Согласен с @Dmitriy. Проверьте. Любой скриптовый язык, адаптер для БД -- и вперёд, пробовать экспоненциально увеличивающиеся массивы. Как умрёт, бинарным поиском отследить, на каком числе. –  Jun 11 '15 at 16:32
  • а разве эти ограничения не документированы? – hellboy Oct 09 '15 at 05:36

1 Answers1

1

В англоязычном SO энтузиасты провели исследование и выяснили, что количество объектов в $in формально не ограничено, но, поскольку в качестве аргумента для .find() отсылается объект, на него тоже действует ограничение размера объектов в MongoDB в 16 Мб.

Object.bsonsize({ 'field' : { $in : [ value1, value2, ..., valueN] } })

Этот код даст вам размер вашего запроса. Вероятно, чем больше будет размер всяких field и valueX, тем меньше их влезет в запрос.

Вывод:

Если ставить целью послать максимальное количество вариантов в $in, то один товарищ утверждает, что максимальное количество элементов в $in примерно равно 1,5 миллиону

Если цель - практическое применение, то об ограничение можно спокойно игнорировать)

Mi Ke Bu
  • 967