Long (64ビット整数)
最終更新:2026-10-09
Long (64ビット整数)
Long は符号付き64ビット整数(BSON 型 int64)で、およそ ±9.2×10^18 です。`Long(42)` または別名の `NumberLong(42)` で構築します。ミリ秒タイムスタンプ、大きなカウンタ、大きな ID に使います。JavaScript の安全な整数(およそ9×10^15)を超える値は、精度損失を避けるため文字列から構築する必要があります。
| カテゴリ | BSON 型 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
Long(<integer>)
Long("<large number string>")
NumberLong("9223372036854775807")
戻り値:Long(int64)の BSON 整数を返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// Long: 64ビットの大きな整数
use shop
db.stats.insertOne({ total: Long('9223372036854775807') })
db.stats.find({ total: { $gt: Long(1000) } })
出力:
{ _id: ObjectId('...'), total: Long('9223372036854775807') }
📌 注意事項
- Number.MAX_SAFE_INTEGER を超える値は文字列から構築する
- 型名はドライバごとに異なる: Long(Java/Node)、Int64(Python)
- Int32 と Long を混ぜると $type の整合性が壊れる
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
QLong は NumberLong と同じですか?
Aいいえ。NumberLong は mongosh における Long の別名で、どちらも int64 型を生成します。
QLong はどのくらい大きな値を保持できますか?
A符号付き64ビットでおよそ ±9.2×10^18 です。JS の安全な整数範囲をはるかに超えます。
Qなぜ Long を文字列から構築するのですか?
Aおよそ9×10^15 を超える数値リテラルは JS で精度が失われます。文字列からの構築は正確なままです。