MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBにnew Date()を保存する方法!ISODateの使い方を実例で解説

MongoDBにnew Date()の日時データを保存するには、mongoシェルでnew ISODate()を使用します。ISODateはUTC(協定世界時)を基準としたBSON Date型として格納されるため、タイムゾーンに左右されず一貫性のある日時管理が可能です。ここでは、実際にドキュメントを作成しながら手順をわかりやすく解説します。

コレクションの作成と日付データの挿入

まず、insertOne()メソッドを使って「UserName」と「UserLoginDatetime」フィールドを持つドキュメントを3件挿入し、saveDateDemoコレクションを作成します。

> db.saveDateDemo.insertOne({"UserName":"John","UserLoginDatetime":new ISODate('2018-01-31 12:34:56')});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd67d4de8cc557214c0e04")
}
> db.saveDateDemo.insertOne({"UserName":"John","UserLoginDatetime":new ISODate('2019-02-01 04:01:10')});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd67e8de8cc557214c0e05")
}
> db.saveDateDemo.insertOne({"UserName":"John","UserLoginDatetime":new ISODate('2019-04-22 12:36:45')});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd6805de8cc557214c0e06")
}

find()メソッドで全ドキュメントを表示する

挿入したデータを確認するには、find()メソッドを使用します。pretty()を組み合わせると、整形された読みやすい形式で出力されます。

> db.saveDateDemo.find().pretty();

このコマンドを実行すると、以下のような結果が得られます。

{
   "_id" : ObjectId("5cbd67d4de8cc557214c0e04"),
   "UserName" : "John",
   "UserLoginDatetime" : ISODate("2018-01-31T12:34:56Z")
}
{
   "_id" : ObjectId("5cbd67e8de8cc557214c0e05"),
   "UserName" : "John",
   "UserLoginDatetime" : ISODate("2019-02-01T04:01:10Z")
}
{
   "_id" : ObjectId("5cbd6805de8cc557214c0e06"),
   "UserName" : "John",
   "UserLoginDatetime" : ISODate("2019-04-22T12:36:45Z")
}

ポイント:日付はUTCで保存される

出力結果の日時の末尾にある「Z」はUTC(Zulu time)を意味します。MongoDBはすべての日付を内部でUTCとして保持しており、表示時にアプリケーション側でローカルタイムゾーンへ変換するのが一般的な設計です。

また、保存した日付は比較演算子を使った範囲検索にも活用できます。例えば、2019年以降のログイン記録だけを取得したい場合は、次のように$gte演算子を指定します。

> db.saveDateDemo.find({
...   "UserLoginDatetime": { $gte: new ISODate('2019-01-01') }
... }).pretty();

このように、ISODateを使えば日付の保存だけでなく、柔軟な検索条件の構築も簡単に行えます。ログ履歴やアクセス解析など、日時データを扱うシステムではぜひ活用してください。

  1. MongoDBでフィールド名を変更する方法:$projectを使った手順を解説

    MongoDBでフィールド名を変更するには?MongoDBでは、集計パイプラインの $project ステージを使用することで、既存のフィールド名を別の名前に変更して出力することができます。ここでは、実際にコレクションを作成し、「Name」というフィールドを「FullName」に変更する手順を順番に見ていきましょう。1. サンプルコレクションの作成まずは、insertOne() メソッドを使ってドキュメントを含むコレクションを作成します。> db.demo517.insertOne({Name:Chris Brown});{ acknowledged : true, inse

  2. MongoDBでドキュメントのフィールドにアクセスする方法|find()とプロジェクションの使い方

    MongoDBでドキュメント内のフィールドにアクセスするには、find()メソッドを使用します。この記事では、実際にコレクションを作成し、ドキュメントを挿入したうえで、特定のフィールドだけを取得する方法をサンプルコード付きで解説します。 コレクションの作成とドキュメントの挿入 まず、サンプル用のコレクション「demo565」を作成し、3件のドキュメントを挿入します。insertOne()メソッドを使って、1件ずつ登録していきましょう。 > db.demo565.insertOne( ... { ... id:101, ... Name:David, ... Countr