Всем привет
В приложение на
nodejs (с другого сервера, через
request) приходят данные (в
JSON) и
.inset'ятся в
mongodb через mongoose.
Где проблема: иногда приходится выводить очень "экзотические массивы данных", из моей базы на mongo например:
у моих документов( и в импортированном
JSON) есть поля
"total_price" (что вроде суммы чека) и
"quantity", но нет "цены за штуку", и стоит вопрос в том, как сделать/вывести это поле.
или
необходимо вывести определенные документы по названию и
"timestamp" а затем просуммировать поле
"quantity" у выведенного массива.
Вопрос стоит в том, а умеет ли это делать
Mongodb сама? А не внешними средствами. К примеру, согласно офицальной документации, для решения первой проблемы нет ничего проще, чем вызвать через mongo shell:
db.имя_коллекции.aggregate(
[
{ $project: { name: 1, Price: { $divide: [ "total_price", "quantity" ] } } }
]
);
но проблема в том, что на сайте с документацией к mongoose, нет практически ни слова об агрегации и арифметических операциях.
Так в чем же дело, я слишком много хочу от
mongoose и он просто не умеет в агрегацию и математические операции? (к примеру, в
Math.floor и
Math.ceil mongo пока не умеет) Или, я - дурак и просто смотрю не туда и не понимаю принцип использоваия драйверов? Где, то-самое место, куда необходимо вставить этот чудесный
mongo-native-shell-code в
Mongoose (что-бы как с
SQL, раз и готово) ? Или необходимо использовать Mongo Native Driver для этих целей?
Или же все ещё хуже, и при придется каждый раз вызывать
.find({ условие:здесь }, null, {sort: 'отсортируюкакнибудь'},function (err, res)
получать выборку от базы в JSON и оперировать уже с ней/res (мат.операции и т.д.),
а затем запихивать все назад в базу через .insert;