2

La structure d'agrégation MongoDB n'a pas de fonction floor. Il a seulement arithmetic operators simple. Alors, comment composer la fonction floor en les utilisant?Comment agréger par étage dans MongoDB

+0

double possible de [Est y at-il une fonction de plancher dans le cadre d'agrégation Mongodb?] (http://stackoverflow.com/questions/13617526/is-there-a-floor-function-in-mongodb-agrgregation-framework) –

Répondre

6

Selon la définition floor(number) = number - (number % step) nous pouvons composer notre formule d'agrégation:

{$subtract: ["$number", {$mod: ["$number", <step>]}]} 

step est un ordre de grandeur. Tout d'abord, il calcule le reste avec $mod puis calcule la différence avec $subtract.

Ainsi, le regroupement des utilisateurs par age plafonnée à nombres entiers sera

db.users.aggregate(
    {$group: {_id: {$subtract: ["$age", {$mod: ["$age", 1]}] }}}) 

Si vous voulez étage à 10s ou 1000s utiliser 10 ou 1000 au lieu de 1.