Dans MongoDB, le $log10
l'opérateur de pipeline d'agrégation calcule le logarithme de base 10 d'un nombre et renvoie le résultat sous la forme d'un double.
$log10
accepte toute expression valide qui se résout en un nombre non négatif.
Le $log10
L'opérateur a été introduit dans MongoDB 3.2.
Exemple
Supposons que nous ayons une collection appelée test
avec le document suivant :
{ "_id" : 1, "data" : 0.5 }
Nous pouvons utiliser le $log10
opérateur pour retourner le log base 10 des data
champ :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
result: { $log10: "$data" }
}
}
]
)
Résultat :
{ "result" : -0.3010299956639812 }
Valeurs hors plage
Comme mentionné, le $log10
L'opérateur accepte toute expression valide qui se résout en un nombre non négatif. Les valeurs en dehors de cette plage entraîneront une erreur.
Supposons que nous ajoutions le document suivant à notre collection :
{ "_id" : 2, "data" : -3 }
Exécutons le $log10
opérateur sur ce document :
db.test.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
result: { $log10: "$data" }
}
}
]
)
Résultat :
uncaught exception: Error: command failed: { "ok" : 0, "errmsg" : "$log10's argument must be a positive number, but is -3", "code" : 28761, "codeName" : "Location28761" } : aggregate failed : [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/assert.js:18:14 [email protected]/mongo/shell/assert.js:618:17 [email protected]/mongo/shell/assert.js:708:16 [email protected]/mongo/shell/db.js:266:5 [email protected]/mongo/shell/collection.js:1046:12 @(shell):1:1
Valeurs nulles
Les valeurs nulles renvoient null
lors de l'utilisation du $log10
opérateur.
Supposons que nous ajoutions le document suivant à notre collection :
{ "_id" : 3, "data" : null }
Exécutons le $log10
opérateur sur ce document :
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
result: { $log10: "$data" }
}
}
]
)
Résultat :
{ "result" : null }
Nous pouvons voir que le résultat est null
.
Valeurs NaN
Si l'argument se résout en NaN
, $log10
renvoie NaN
.
Exemple :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
result: { $log10: 1 * "$data" }
}
}
]
)
Résultat :
{ "result" : NaN }
Champs inexistants
Si le $log10
l'opérateur est appliqué sur un champ qui n'existe pas, null
est renvoyé.
Exemple :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
result: { $log10: "$name" }
}
}
]
)
Résultat :
{ "result" : null }