MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB $floor

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 }