Решил на проекте использовать mongoDB 3.0. Плюсов много — работает быстро, доступный синтаксис команд, много чего имеет в движке, например, работать с геоданными, шардинг и все такое. Но я натолкнулся и на подводные камни — размер BSONDocument коллекции возвращаемых различными операциями, кроме find(), составляет не более 16Мегабайт — пруф: maximum BSON document size (англ).
Таким образом, мы не можем получить сразу результат объемной агрегации — размер не позволяет — результат нужно через out сохранять в отдельной коллекции.
А методы, не имеющие возможность сохранять коллекцию через out — например distinct() — просто вызывают ошибку. Поэтому disctinct() мне пришлось реализовать через MapReduce. То есть, в попытке реализовать SELECT * IN () пришлось городить довольно сложный велосипед, чтобы обойти ограничения на размер данных в 16Мб ).
Если используются типизированные коллекции, в супер больших объемах данных, позаботитесь о BIGINT заранее, иначе mongoDB позаботится об этом сама, и вызовет исключение.
Такие дела.