Dans MongoDB, le $floor
l'opérateur de pipeline d'agrégation renvoie le plus grand nombre entier inférieur ou égal au nombre spécifié.
$floor
accepte toute expression valide qui se résout en un nombre.
Exemple
Supposons que nous ayons une collection appelée test
avec les documents suivants :
{ "_id" : 1, "data" : 8.99 } { "_id" : 2, "data" : 8.01 } { "_id" : 3, "data" : -8.99 } { "_id" : 4, "data" : -8.01 } { "_id" : 5, "data" : 8 }
Nous pouvons utiliser le $floor
opérateur pour renvoyer le plus grand entier inférieur ou égal à la data
champ :
db.test.aggregate(
[
{ $project: {
data: 1,
floor: { $floor: "$data" }
}
}
]
)
Résultat :
{ "_id" : 1, "data" : 8.99, "floor" : 8 } { "_id" : 2, "data" : 8.01, "floor" : 8 } { "_id" : 3, "data" : -8.99, "floor" : -9 } { "_id" : 4, "data" : -8.01, "floor" : -9 } { "_id" : 5, "data" : 8, "floor" : 8 }
Dans cet exemple, les data
champ est la valeur d'origine, et le floor
champ est le plancher de cette valeur.
Valeurs nulles
Les valeurs nulles renvoient null
lors de l'utilisation du $floor
opérateur.
Supposons que nous ajoutions le document suivant à notre collection :
{ "_id" : 6, "data" : null }
Appliquons le $floor
opérateur sur ce document :
db.test.aggregate(
[
{ $match: { _id: 6 } },
{ $project: {
floor: { $floor: "$data" }
}
}
]
)
Résultat :
{ "_id" : 6, "floor" : null }
Nous pouvons voir que le résultat est null
.
Valeurs NaN
Si l'argument se résout en NaN
, $floor
renvoie NaN
.
Exemple :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
floor: { $floor: "$data" * 1 }
}
}
]
)
Résultat :
{ "_id" : 1, "floor" : NaN }
Champs inexistants
Si le $floor
l'opérateur est appliqué sur un champ qui n'existe pas, null
est renvoyé.
Exemple :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
floor: { $floor: "$name" }
}
}
]
)
Résultat :
{ "_id" : 1, "floor" : null }