定義
$round$roundは、数値を整数または指定された小数点以下の桁に四捨五入します。$roundの構文は次のとおりです。{ $round : [ <number>, <place> ] } フィールドタイプ説明<number>数値
数値に変換される有効な式であればどれでもかまいません。 具体的には、式は整数、double、
decimal、またはlongに変換される必要があります。$round式が数値以外のデータ型に解決された場合はエラーを返します。<place>integer
任意 -20から100までの整数(排他的)に変換される有効な 式であればどれでもかまいません。例
-20 < place < 100。指定しない場合、デフォルトは0です。<place>が正の整数に解決される場合、$round<place>は小数点以下桁に丸められます。たとえば、
$round : [1234.5678, 2]小数点以下2桁に丸められ、1234.57が返されます。<place>が負の整数に解決される場合、$roundでは小数点の左側の数字<place>を使用して丸められます。たとえば、
$round : [1234.5678, -2]は小数点の左側にある2桁目(3)を使用し、1200を返します。の絶対値が小数点の左の桁数と等しいかそれを超える場合、
<place>$round0は を返します。たとえば、
$round : [ 1234.5678, -4]小数点の左側の4番目の桁を指定します。これは小数の左の桁数に等しく、0を返します。が
<place>0に解決される場合、$roundは小数点の右側の最初の桁を使用して丸められ、丸められた整数値を返します。たとえば、
$round : [1234.5678, 0]は1235を返します。
動作
偶数値への丸め
値5が丸められる場合、 $roundでは最も近い偶数値に丸められます。例えば、次のサンプル ドキュメントについて考えてみます。
{_id : 1, "value" : 10.5}, {_id : 2, "value" : 11.5}, {_id : 3, "value" : 12.5}, {_id : 4, "value" : 13.5}
$round : [ "$value", 0] は以下を返します。
{_id : 1, "value" : 10}, {_id : 2, "value" : 12}, {_id : 3, "value" : 12}, {_id : 4, "value" : 14}
値 10.5 は偶数値 10に最も近い値であり、値 11.5 と 12.5 は偶数値 12に最も近い値です。最も近い偶数値に丸めると、四捨五入されたデータが、通常の切り上げまたは切り捨てよりも均等に分散されます。
返されるデータ型
返されるデータ型は、入力式または値のデータ型と一致します。
null、NaN 、+/- Infinity
最初の引数が
nullの値に解決されるか、欠落しているフィールドを参照している場合、$roundはnullを返します。最初の引数が
NaNに解決された場合、$roundNaNを返します。最初の引数が負の無限大または正の無限大に解決された場合、
$roundそれぞれ負の無限大または正の無限大を返します。
例 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
例
次のドキュメントを含むsamplesという名前のコレクションを作成します。
db.samples.insertMany( [ { _id: 1, value: 19.25 }, { _id: 2, value: 28.73 }, { _id: 3, value: 34.32 }, { _id: 4, value: -45.39 } ] )
次の集計は、
valueを小数第1位で丸めたものを返します。db.samples.aggregate([ { $project: { roundedValue: { $round: [ "$value", 1 ] } } } ]) この操作は次の結果を返します。
{ "_id" : 1, "roundedValue" : 19.2 } { "_id" : 2, "roundedValue" : 28.7 } { "_id" : 3, "roundedValue" : 34.3 } { "_id" : 4, "roundedValue" : -45.4 } 次の集計は、小数点の左側の最初の桁を使用して丸められた
valueを返します。db.samples.aggregate([ { $project: { roundedValue: { $round: [ "$value", -1 ] } } } ]) この操作は次の結果を返します。
{ "_id" : 1, "roundedValue" : 10 } { "_id" : 2, "roundedValue" : 20 } { "_id" : 3, "roundedValue" : 30 } { "_id" : 4, "roundedValue" : -50 } 次の集計では、整数に丸められた
valueが返されます。db.samples.aggregate([ { $project: { roundedValue: { $round: [ "$value", 0 ] } } } ]) この操作は次の結果を返します。
{ "_id" : 1, "roundedValue" : 19 } { "_id" : 2, "roundedValue" : 29 } { "_id" : 3, "roundedValue" : 34 } { "_id" : 4, "roundedValue" : -45 }