MongoDBでISODateを数値に変換する方法
MongoDBでISODateを数値に変換する方法
MongoDBでは、getTime()メソッドを使うことで、ISODate型の日付データを数値(ミリ秒単位のタイムスタンプ)に変換できます。日付同士の比較や計算処理を行いたい場合に役立つテクニックです。まずは基本の構文を見てみましょう。
yourVariableName.getTime();
このメソッドは、1970年1月1日00:00:00 UTCからの経過時間をミリ秒単位の数値として返します。
変換対象となるISODateの準備
はじめに、変換したい日付をISODateとして変数に代入します。ここでは例として、2019年4月18日の日時を使用します。
> var arrivalDate = ISODate('2019-04-18 13:50:45');getTime()で数値に変換する
続いて、getTime()メソッドを呼び出し、ISODateを数値に変換します。以下がそのクエリです。
> arrivalDate.getTime();
このクエリを実行すると、次のような出力が得られます。
1555595445000
これで、ISODateが数値(ミリ秒タイムスタンプ)として取得できました。
変換結果が正しいか検証する方法
取得した数値が本当に正しいものかどうか、確認しておきましょう。数値を引数としてnew Date()に渡すことで、元のISODateに復元できます。
> new Date(1555595445000);
実行結果は以下の通りです。
ISODate("2019-04-18T13:50:45Z")出力された日付は、最初に設定した「2019-04-18T13:50:45Z」と完全に一致しています。つまり、この数値は正しいタイムスタンプであることが確認できました。
まとめ
getTime()メソッドを使えば、MongoDBのISODateを簡単に数値へ変換でき、逆にnew Date(数値)とすることで元の日付に復元できます。日付データを並べ替えたり、期間の差分を計算したりする際にぜひ活用してください。
-
MongoDBでDate/ISODateの各コンポーネント(年・月・日・時・分・秒)を取得する方法
MongoDBでDate(ISODate)の各コンポーネント(年・月・日・時・分・秒など)を取得するには、まずコレクションに日付を含むドキュメントを作成します。ここでは、実際のコード例を通して手順をわかりやすく解説します。1. 日付を含むドキュメントの作成まず、insert()メソッドを使って、現在日時を持つドキュメントをコレクションに挿入します。> db.componentOfDateDemo.insert({"ShippingDate":new Date()}); WriteResult({ "nInserted" : 1 })2. find(
-
MongoDBで配列の値を使ってコレクションを並べ替える方法
MongoDBのコレクションを配列の値を基準にソートしたい場合は、aggregate()メソッドと $sort ステージを組み合わせて使用します。さらに、配列を個々のドキュメントに分解するために $unwind も活用します。 サンプルコレクションの作成 まず、ドキュメントを含むコレクションを作成しましょう。ここでは、学生ごとの詳細情報(名前とスコア)を配列として持つドキュメントを挿入します。 > db.demo577.insertOne( ... { ... student: { ... details: [ ... { .