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
2
A
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>]}]}
où 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.
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) –