Dans MongoDB, le $sin l'opérateur de pipeline d'agrégation renvoie le sinus d'une valeur mesurée en radians.
$sin accepte toute expression valide qui se résout en un nombre.
Le $sin L'opérateur a été introduit dans MongoDB 4.2.
Exemple
Supposons que nous ayons une collection appelée test avec le document suivant :
{ "_id" : 1, "data" : 2 }
Nous pouvons utiliser le $sin opérateur pour retourner le sinus de la data champ :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
sine: { $sin: "$data" }
}
}
]
) Résultat :
{ "sine" : 0.9092974268256817 } Convertir en radians
Comme mentionné, $sin renvoie le sinus d'une valeur mesurée en radians. Si la valeur est en degrés, vous pouvez utiliser le $degreesToRadians opérateur pour le convertir en radians.
Exemple :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
sine: { $degreesToRadians: { $sin: "$data" } }
}
}
]
) Résultat :
{ "sine" : 0.015870233978020357 } Valeurs décimales 128 bits
Par défaut, le $sin l'opérateur renvoie les valeurs sous la forme d'un double , mais il peut également renvoyer des valeurs sous forme décimale de 128 bits tant que l'expression se résout en une valeur décimale de 128 bits.
Supposons que nous ajoutions le document suivant à notre collection :
{ "_id" : 2, "data" : NumberDecimal("2.1301023541559787031443874490659") }
Exécutons le $sin opérateur sur ce document :
db.test.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
sine: { $sin: "$data" }
}
}
]
) Résultat :
{ "sine" : NumberDecimal("0.8476235356531703096519423201190329") } La sortie est décimale 128 bits.
Valeurs nulles
Les valeurs nulles renvoient null lors de l'utilisation du $sin opérateur.
Supposons que nous ajoutions le document suivant à notre collection :
{ "_id" : 3, "data" : null }
Exécutons le $sin opérateur sur ce document :
db.test.aggregate(
[
{ $match: { _id: 3 } },
{ $project: {
_id: 0,
sine: { $sin: "$data" }
}
}
]
) Résultat :
{ "sine" : null }
Nous pouvons voir que le résultat est null .
Valeurs NaN
Si l'argument se résout en NaN , $sin renvoie NaN .
Exemple :
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
sine: { $sin: 1 * "$data" }
}
}
]
) Résultat :
{ "sine" : NaN } Champs inexistants
Si le $sin 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,
sine: { $sin: "$name" }
}
}
]
) Résultat :
{ "sine" : null } Infini
Fournir Infinity ou -Infinity renverra une erreur hors plage.
Supposons que nous ajoutions le document suivant à la collection :
{ "_id" : 4, "data" : Infinity }
Lançons $sin encore :
db.test.aggregate(
[
{ $match: { _id: 4 } },
{ $project: {
_id: 0,
sine: { $sin: "$data" }
}
}
]
) Résultat :
uncaught exception: Error: command failed: {
"ok" : 0,
"errmsg" : "cannot apply $sin to inf, value must in (-inf,inf)",
"code" : 50989,
"codeName" : "Location50989"
} : 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