定義
$trunc$truncは、数値を整数または指定された小数点以下の桁に切り捨てます。
構文
$trunc演算子の構文は次のとおりです。
{ $trunc : [ <number>, <place> ] }
フィールド | タイプ | 説明 |
|---|---|---|
| 数値 | 数値に変換される有効な式であればどれでもかまいません。 具体的には、式は整数、double、
|
| integer | 任意- 20から100までの整数(排他的)に変換される有効な式であればどれでもかまいません。 たとえば、
|
<number>式は、数値に変換される限り、どのような有効な式でもかまいません。 式の詳細については、「式 」を参照してください。
動作
$truncは切り捨てられたデータを丸めません。 入力値を指定した場所で丸めると、 $round式を使用します。
返されるデータ型
返されるデータ型は、入力式または値のデータ型と一致します。
浮動小数点数による切り捨ての精度
小数点の後に 20 桁の倍精度浮動点数 4.56 を出力すると、4.55999999999999960920 が表示されます。これは 4.56 よりわずかに小さく、4.55 に切り捨てられます。
MongoDB は浮動点計算にIEEE 754 標準を使用しており、動作はその標準に準拠しています。
高精度を必要とするアプリケーションで浮動点数が必要な場合は、Decimal128 値を検討してください。詳細については、 「 BSON.Decimal 」を参照してください。128
通貨価値を保存する必要がある場合は、最小の通貨単位を使用する整数を検討してください。例、浮動点数の代わりに、セントまたはペナルティを含む整数を使用します。
null、NaN 、+/- Infinity
引数が
nullの値に解決されるか、欠落しているフィールドを参照する場合、$truncはnullを返します。引数が
NaNに解決された場合、$truncはNaNを返します。引数が負の無限大または正の無限大に解決された場合、
$truncはそれぞれ負の無限大または正の無限大を返します。
例 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
例
次のドキュメントを含むsamplesという名前のコレクションを作成します。
db.samples.insertMany( [ { _id: 1, value: 19.25 }, { _id: 2, value: 28.73 }, { _id: 3, value: 34.32 }, { _id: 4, value: -45.34 } ] )
次の集計では、
valueを小数第1位で切り捨てて返します。db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", 1 ] } } } ]) この操作は次の結果を返します。
{ "_id" : 1, "truncatedValue" : 19.2 } { "_id" : 2, "truncatedValue" : 28.7 } { "_id" : 3, "truncatedValue" : 34.3 } { "_id" : 4, "truncatedValue" : -45.3 } 次の集計では、第 1 位に切り捨てられた
valueが返されます。db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", -1 ] } } } ]) この操作は次の結果を返します。
{ "_id" : 1, "truncatedValue" : 10 } { "_id" : 2, "truncatedValue" : 20 } { "_id" : 3, "truncatedValue" : 30 } { "_id" : 4, "truncatedValue" : -40 } 次の集計では、整数に切り捨てられた ``value`` が返されます。
db.samples.aggregate([ { $project: { truncatedValue: { $trunc: [ "$value", 0 ] } } } ]) この操作は次の結果を返します。
{ "_id" : 1, "truncatedValue" : 19 } { "_id" : 2, "truncatedValue" : 28 } { "_id" : 3, "truncatedValue" : 34 } { "_id" : 4, "truncatedValue" : -45 }