$toLong (64 ビット整数への変換)
最終更新:2026-10-09
$toLong (64 ビット整数への変換)
$toLong は値を 64 ビット符号付き整数(BSON long)に変換します。int よりはるかに広い範囲を持ち、タイムスタンプや ID などの大きな整数に最適です。数値、数値文字列、ブール値を受け付け、null は null のままです。代表的な用途は、高精度の ID 文字列の数値化や、秒・ミリ秒タイムスタンプの処理です。文字列は整数リテラルである必要があります。to: long の $convert 短縮形で、int と long を混ぜた演算は自動的に long へ昇格します。
| カテゴリ | 集合・条件・変換 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $toLong: <expression> }
⚙️ パラメータ
| 式 | 数値、数値文字列、またはブール値。 |
|---|
戻り値:long。入力が null の場合は null
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $toLong: タイムスタンプ文字列を数値に変換
db.events.aggregate([
{ $project: {
ts: { $toLong: '$tsStr' }
} }
])
出力:
{ '_id': 1, 'ts': 1780000000000 }
📌 注意事項
- 64 ビットの範囲ならミリ秒タイムスタンプを余裕で保持できる
- 文字列は整数リテラルである必要があり、違うとエラー
- int と long の混在は自動的に long へ昇格する
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$toLong はいつ使いますか?
Aタイムスタンプや大きな ID のように、約 21 億を超え得る値のときです。
Q$toInt と混ぜるとどうなりますか?
A結果は自動的に long へ昇格します。
Qnull は何を返しますか?
Anull を返します。