$toDecimal (Decimal128 への変換)

最終更新:2026-10-09

$toDecimal (Decimal128 への変換)

$toDecimal は値を Decimal128 に変換します。Decimal128 は、金額や精度が重要な演算向けの高精度 10 進型で、double の 2 進浮動小数点誤差を回避できます。数値、数値文字列、ブール値を受け付け、null は null のままです。代表的な用途は、注文金額の累積と比較です。double との混合演算は自動的に decimal へ昇格しますが、無効な文字列の変換はエラーになるため、$convert の onError でガードしてください。

カテゴリ集合・条件・変換
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $toDecimal: <expression> }

⚙️ パラメータ

式数値、数値文字列、またはブール値。

戻り値:Decimal128 値。入力が null の場合は null

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $toDecimal: 金額文字列を高精度で解析
db.orders.aggregate([
  { $project: {
      amount: { $toDecimal: '$amountStr' }
  } }
])

出力:

{ '_id': 1, 'amount': { '$numberDecimal': '199.90' } }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Qなぜ金額に decimal を使うのですか?
Adouble には 2 進浮動小数点誤差があり、0.1 などが不正確に累積します。Decimal128 は正確です。
Qどの入力が変換されますか?
A数値、数値文字列、ブール値(true は 1)です。
Q文字列 'abc' は?
Aエラーになります。$convert の onError でガードしてください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%