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 :
example@sqldat.com/mongo/shell/utils.js:25:13
example@sqldat.com/mongo/shell/assert.js:18:14
example@sqldat.com/mongo/shell/assert.js:618:17
example@sqldat.com/mongo/shell/assert.js:708:16
example@sqldat.com/mongo/shell/db.js:266:5
example@sqldat.com/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 }