MongoDB Aggregation Framework не имеет функции floor
. У этого есть только arithmetic operators. Итак, как скомпоновать функцию floor
?Как агрегировать по полу в MongoDB
2
A
ответ
6
Согласно определению floor(number) = number - (number % step)
мы можем составить нашу агрегацию формулу:
{$subtract: ["$number", {$mod: ["$number", <step>]}]}
где step
на порядок. Сначала он вычисляет остаток с $mod
, а затем вычисляет разницу с $subtract
.
Таким образом, группировка пользователей по age
округляется целых чисел будет
db.users.aggregate(
{$group: {_id: {$subtract: ["$age", {$mod: ["$age", 1]}] }}})
Если вы хотите, чтобы пол 10с или 1000s использовать 10 или 1000 вместо 1.
Возможный дубликат [Is есть функция пола в структуре агрегации Mongodb?] (http://stackoverflow.com/questions/13617526/is-there-a-floor-function-in-mongodb-aggregation-framework) –