Date (日時)
最終更新:2026-10-09
Date (日時)
Date は MongoDB の日時型で、内部では Unix エポックからの64ビットのミリ秒数として格納されます。ISO 日付文字列(new Date("2026-09-25"))またはミリ秒タイムスタンプから構築します。クエリでは $gt/$lt などで範囲フィルタされます。
| カテゴリ | BSON 型 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
new Date("<ISO string>")
new Date(<ms timestamp>)
ISODate("<ISO string>")
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// Date: 今日以降に作成された注文
db.orders.find({
createdAt: { $gte: new Date("2026-09-25T00:00:00Z") }
})
出力:
// createdAt >= 2026-09-25 00:00 UTC のドキュメントを返す
📌 注意事項
- UTC ミリ秒として格納され、クライアントのタイムゾーンで表示される
- Date と文字列: "2026-09-25" は文字列、new Date("2026-09-25") は Date
- 範囲クエリは $gte/$lt を使う(半開区間)
- アグリゲーションでは $dateToString で出力を整形する
🏷️ 関連タグ
💡 関連ケース
ドキュメント削除とNode.js入門
ドキュメントとBSON:MongoDBデータの基礎
ドキュメントの挿入:MongoDBの作成操作をマスターする
Mongooseスキーマ設計と埋め込み vs 参照
📚 関連チュートリアル
❓ よくある質問
QDate と Timestamp の違いは?
ADate はミリ秒の時点を格納します。Timestamp は内部の oplog 用(インクリメントカウンタ付き)で、アプリケーションからはほとんど使われません。
Qミリ秒タイムスタンプはどう格納しますか?
Anew Date(ms) を Date として格納します。生の数値を数値フィールドに保存しないでください。
Q文字列で日付をクエリできますか?
A避けてください。文字列と Date は別の型で、$gt/$lt の比較は黙って外れます。Date として格納し、Date としてクエリします。