$toDouble(集計)
定義
動作
次の表に、double に変換できる入力型を一覧にしています。
入力タイプ | 動作 |
---|---|
ブール値 | Returns 0 for false .Returns 1 for true . |
Double | 何も処理しません。double を返します。 |
小数点 | 小数値を double として返します。 小数値は、double の最小値と最大値の範囲内に収まる必要があります。 最小の double 値より小さい値、または最大の double 値より大きい値の小数値は変換できません。 |
整数 | int 値を double として返します。 |
Long | long 値を double として返します。 |
文字列 | string の数値を double として返します。 string の値は 10 進数の数値で(例: 10 進数以外の数の string の値(例: |
日付 | 日付値に対応する 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
を使用します。