MongoDB shell で moment.js や underscore.js などの便利ライブラリを使えるように拡張する mesh.js
MongoDB shell で JavaScript の有名なライブラリを使えるように拡張する mesh.js が便利だったのでご紹介します。
まず mesh.js をダウンロードします。
curl -O https://raw.githubusercontent.com/skratchdot/mesh/master/mesh.js
次に MongoDB shell で mesh.js ファイルを読み込んで shell から使えるようにします。読み込み方は2パターンあります。
.mongorc.js ファイルに下記のように
load('/path/to/mesh.js');
MongoDB shell 起動時に mesh.js ファイルを指定して読み込むことができます。
mongo --shell /path/to/mesh.js
個人的には .mongorc.js に書く方が無意識に使えるので便利です。
例えば、EC サイトで商品ページ productpages が公開日 published_at から1ヶ月毎の日付を確認したい場合は以下のように使えます。
> var productPage = db.productpages.findOne( ObjectId( "568f2d5f2e2195f01f663e3d" ) )
> productPage.published_at
ISODate("2016-01-08T04:08:59.822Z")
> var m = moment( productPage.published_at );
> m.toDate()
ISODate("2016-01-08T04:08:59.822Z")
> m.clone().add( 30, 'days' ).toDate()
ISODate("2016-02-07T04:08:59.822Z")
> m.clone().add( 60, 'days' ).toDate()
ISODate("2016-03-08T04:08:59.822Z")
> m.clone().add( 90, 'days' ).toDate()
ISODate("2016-04-07T04:08:59.822Z")
他にも時刻情報を Google スプレッドシートで扱いたい場合は moment.js の format メソッドを使って整形できるのは最高です。
> m.format('YYYY-MM-DD HH:mm:ss')
2016-01-08 04:08:59
MongoDB shell で日付の演算をしたくなったら迷わずに mesh.js をインストールすると moment.js が使えて幸せになれそうです。