Docs Menu
Docs Home
/
MongoDB マニュアル
/ / /

$toDouble(集計)

項目一覧

  • 定義
  • 動作
$toDouble

値を double に変換します。 値を double に変換できない場合は、 $toDoubleエラーが発生します。 値が null または欠落している場合、 $toDoubleは null を返します。

$toDouble の構文は次のとおりです。

{
$toDouble: <expression>
}

$toDoubleは任意の有効な式を受け入れます。

$toDouble は次の $convert 式の省略形です。

{ $convert: { input: <expression>, to: "double" } }

次の表に、double に変換できる入力型を一覧にしています。

入力タイプ
動作
ブール値
Returns 0 for false.
Returns 1 for true.
Double
何も処理しません。double を返します。
小数点

小数値を double として返します。

小数値は、double の最小値と最大値の範囲内に収まる必要があります。

最小の double 値より小さい値、または最大の double 値より大きい値の小数値は変換できません。

整数
int 値を double として返します。
Long
long 値を double として返します。
文字列

string の数値を double として返します。

string の値は 10 進数の数値で(例: "-5.5""123456")、double の最小値と最大値の範囲内である必要があります。

10 進数以外の数の string の値(例: "0x6400")または double の最小値と最大値の範囲外の値は変換できません。

日付
日付値に対応する UNIXエポックからのミリ秒数を返します。

次の表に、double への変換の例をいくつか示します。

結果
$toDouble: true
1
$toDouble: false
0
$toDouble: 2.5
2.5
$toDouble: NumberInt(5)
5
$toDouble: NumberLong(10000)
10000
$toDouble: "-5.5"
-5.5
$toDouble: ISODate("2018-03-27T05:04:47.890Z")
1522127087890

次のドキュメントを使用してコレクション weather を作成します。

db.weather.insertMany( [
{ _id: 1, date: new Date("2018-06-01"), temp: "26.1C" },
{ _id: 2, date: new Date("2018-06-02"), temp: "25.1C" },
{ _id: 3, date: new Date("2018-06-03"), temp: "25.4C" },
] )

weather コレクションに対する次の集計操作では、temp 値を解析し、double に変換します。

// Define stage to add degrees field with converted value
tempConversionStage = {
$addFields: {
degrees: { $toDouble: { $substrBytes: [ "$temp", 0, 4 ] } }
}
};
db.weather.aggregate( [
tempConversionStage,
] )

この操作により、次のドキュメントが返されます。

{ "_id" : 1, "date" : ISODate("2018-06-01T00:00:00Z"), "temp" : "26.1C", "degrees" : 26.1 }
{ "_id" : 2, "date" : ISODate("2018-06-02T00:00:00Z"), "temp" : "25.1C", "degrees" : 25.1 }
{ "_id" : 3, "date" : ISODate("2018-06-03T00:00:00Z"), "temp" : "25.4C", "degrees" : 25.4 }

注意

変換操作でエラーが発生した場合、集計操作は停止し、エラーがスローされます。この動作をオーバーライドするには、代わりに $convert を使用します。

戻る

$toDecimal

項目一覧