Timestamp (内部用)
最終更新:2026-10-09
Timestamp (内部用)
Timestamp は MongoDB の内部型で、4バイトの Unix 秒と4バイトのインクリメントからなる64ビット値です。レプリカセットの oplog、Change Streams、その他の内部機構を支えます。アプリケーションの時点は Date として格納すべきです。4.4 以降、Timestamp はクエリ条件に現れてはなりません。`Timestamp({ t: seconds, i: increment })` で構築します。
| カテゴリ | BSON 型 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
Timestamp({ t: <seconds>, i: <increment> })
Timestamp(0, 0) // shorthand
戻り値:t(秒)と i(増分)を公開する Timestamp 値を返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// Timestamp: 構築してフィールドを読む
const ts = Timestamp({ t: 1758700000, i: 1 })
print(ts.t, ts.i) // 秒とインクリメント
出力:
1758700000 1
📌 注意事項
- アプリケーションの時点は Timestamp ではなく Date で格納する
- 4.4 以降、Timestamp はクエリ条件で禁止された
- oplog とシャーディングメタデータは Timestamp の順序に依存する
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
QTimestamp と Date の違いは?
ADate はミリ秒の時点を格納します。Timestamp はインクリメントカウンタを加え、oplog などの内部機構に使われます。
Qアプリケーションで Timestamp を格納できますか?
A推奨しません。MongoDB の内部用で、業務時間は Date として格納してください。
Qなぜ Timestamp のクエリはエラーになるのですか?
A4.4 以降、Timestamp フィールドはクエリ条件で禁止されています。破壊的変更なので、Date に移行してください。