Страницы

четверг, 30 октября 2014 г.

Как получить длину массива документа MongoDB

В MongoDB нет "нативного" метода получения длины массива, только с помощью aggregation framework, стало быть эта нехитрая операция на самом деле не особенно "дешевая", что желательно принимать во внимание еще на этапе проектирования. В моем арсенале есть три способа решения этого вопроса.

Например у нас есть коллекция posts:

Вариант 1:  "раскрутить" массив и суммировать количество элементов:

Вариант 2: использовать оператор $size, который появился только в версии 2.6:

Вариант 3: никода не считать длину массива, а использовать отдельное поле, в котором ее хранить, мой любимый вариант :). Таким образом:
- добавляем элемент в массив:

- добавляем еще пару элементов:

- удаляем элемент из массива:

Easy peasy lemon squeezy :).