[Mongodb] Кастомная функция трансформирующая часть документа в аггрегации
От: TarasKo Голландия  
Дата: 10.01.15 20:51
Оценка:
Есть большая коллекция с документами вида:
{
ts: <timestamp>,
e: <exchange>,
t: <ticker>,
asks: [[<price>, <volume>], [<price>, <volume>], [<price>, <volume>], [<price>, <volume>], ...]
bids: [[<price>, <volume>], [<price>, <volume>], [<price>, <volume>], [<price>, <volume>], ...]
}
Массивы bids, asks могут быть довольно большими. Хочется при запросе получит оригинальные документы, но что б в bids и asks были только первые несколько элементов этих массивов.
Сколько элементов получит определяется условием, что сумма их volume должна быть не меньше заданного числа.
Смотрел в сторону aggregate, но вроде как нельзя написать свою кастомную функцию, которой можно было бы воспользоваться, а теми которые есть в комплекте не знаю как это сделать.

Можно конечно через mapReduce, в map сделать трансформацию и еmit(this._id, ...), а в reduce возвращать всегда нулевой элемент. Но поидее это будет медленнее чем вариант с aggregate если б он был
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.