MongoDB shell で moment.js や underscore.js などの便利ライブラリを使えるように拡張する mesh.js
MongoDB shell で JavaScript の有名なライブラリを使えるように拡張する mesh.js が便利だったのでご紹介します。
mesh.js のインストール
まず mesh.js をダウンロードします。
curl -O https://raw.githubusercontent.com/skratchdot/mesh/master/mesh.js |
次に MongoDB shell で mesh.js ファイルを読み込んで shell から使えるようにします。読み込み方は2パターンあります。
.mongorc.js に load メソッドで読み込むパターン
.mongorc.js ファイルに下記のように
load('/path/to/mesh.js'); |
MongoDB shell 起動時に読み込むパターン
MongoDB shell 起動時に mesh.js ファイルを指定して読み込むことができます。
mongo --shell /path/to/mesh.js |
個人的には .mongorc.js に書く方が無意識に使えるので便利です。
[事例] moment.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 が使えて幸せになれそうです。