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

MongoDB $log10

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 }