2

MongoDB Aggregation Framework не имеет функции floor. У этого есть только arithmetic operators. Итак, как скомпоновать функцию floor?Как агрегировать по полу в MongoDB

+0

Возможный дубликат [Is есть функция пола в структуре агрегации Mongodb?] (http://stackoverflow.com/questions/13617526/is-there-a-floor-function-in-mongodb-aggregation-framework) –

ответ

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.