Mongo DBのfindで日付検索する方法

mongo

Mongo DBを日付で検索するクエリを解説していきます。

以前はJavaプログラム内からMongo DBクエリ発行する方法をやりました。(参照 : Spring DataでMongo DBへ接続する基本的な設定を解説)

今回はターミナルからクエリを直接実行する方法を解説します。

[スポンサーリンク]

このページでやること

Mongo DBのデータを日付検索する方法を解説します。

Mongo DBへの接続方法

まずはMongo DBへ接続します。
これより下のサンプルにでてくるDB「test_db」とコレクション「test_collecton」は用意をお願いします。
「test_collecton」のフィールドはidとdateがあればOKです。

>mongo
Last login: Mon Dec 29 21:39:07 2014 from

DBスキーマへ接続します。

> use test_db
switched to db test_db

日付検索する方法

まずは単純に日付の範囲検索をするクエリを紹介します。
$gteは記号で表すと「>=」です。
$lteは記号で表すと「<=」です。
以下のクエリは、2014-11-01から2014-11-30のデータを抽出する条件となります。

db.test_collecton.find({date:{$gte:ISODate("2014-11-01T00:00:00Z"),
$lte:ISODate("2014-11-30T00:00:00Z")}})

検索結果を日付でソートする方法

こちらのクエリは先ほどのクエリにソートを追加したものとなります。
ソートを追加するには、表示する項目{'date':1, '_id':1}部分とsort({'date':-1}が必要となります。
sortは-1だと降順。1だと昇順となります。

db.test_collecton.find({date:{$gte:ISODate("2014-11-01T00:00:00Z"),
$lte:ISODate("2014-11-30T23:00:00Z")}},
{'date':1, '_id':1}).sort({'date':-1})

さいごに

Mongo DBといってもRDBMSライクなクエリが発行出来てとても便利です。
もっとMongo DBがメジャーになってくれると嬉しいですね。
そしていつかはNonSQLへとシフトしてくれたらSQL地獄から解放されるのでしょうか。
それでは!