0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

とりあえずmongoDBでfindしたかった話

Last updated at Posted at 2019-02-22

ゴール

タイトルの通り、この記事はmongoDBでfindして結果を参照できるまでをゴールとしています。

  • mongoDBがどういうものかわからないけど、DBに登録されている情報を確認したい
  • とりあえず触れる環境があるから試しにfindくらいしてみよう

といった方向けの記事です。
環境構築はもちろん、updateやinsertのお話も登場しませんのでご了承ください。
本記事はWindows環境を想定して記載しています。

findするための準備

ここでは下記の2つの方法でfindする方法を記載します。

  • NoSQLBooster for MongoDB
  • mongo Shell

NoSQLBooster for MongoDB

インストール

公式サイトから環境にあったものをダウンロード後にインストールしてください。

設定

起動後にConnect⇒Createから設定を行います。

  • ServerにURLを設定してください
  • Nameは任意の名称にしてください

その他の設定タブに関しては、環境によって入力する必要があるかと思います。
パスワードや秘密鍵などは管理者に確認をとって必要な設定を行ってください。
Test Connectionをクリックして、接続が成功すれば設定完了です。

サンプル画面(公式サイトより)

  • Connection Treeに接続設定したDBが表示されます
  • test:unicornsタブがQuery実行対象のDB、そのしたのエリアが実行するQureyになります
    • Qureyは直接入力するか、「Qurey」ボタンをクリックすればGUIベースで作成もできます
- Qurey実行結果が画面右下部分に表示されます - 実行結果が複数になる場合は「Tree」から「Table」に変更するとカラムが1行で表示されるためおすすめです

mongo Shell

インストール

公式サイトから環境にあったものをダウンロード後にインストールしてください。
必須ではないですがMongoDBをインストールしたフォルダを環境PATHに登録しておくと便利です。
インストール後に、コマンドプロンプトでmongoと入力して、
mongo shellが起動すれば準備完了です。

findしてみる

単純に全件検索をするだけなら下記のQureyを実行すればOKです。
db.getCollection("unicorns").find({})

ちなみにサンプル画像で他に使用されているものについては下記のとおりです。

  説明
projection 検索結果に表示するカラム名
・設定しない場合はすべて表示されます
・サンプルの場合はname列とloves列だけ表示されます
sort ソート順です。
・設定しない場合は昇順です
・-1を設定すると降順になります
limit 取得件数です

詳細は公式のDocumentationを参照して下さい。

条件を付けたfind

下記のように記載すると、
カラム名「name」が「Dunx」かつ
カラム名「time」が2019/01/01~2019/01/02未満
のレコードを検索することができます。

db.getCollection("unicorns").find(
    {name: "Dunx",
     time:{ "$gte" : ISODate("2019-01-01T00:00:00+09:00"),
            "$lte" : ISODate("2019-01-02T00:00:00+09:00")},
    }
);
Operator 説明
$eq 一致("name"で使用しているとおりこれは省略可能)
$gt より大きい
$gte 以上
$in 含む
$lt より小さい
$lte 以下

他のOperatorについては公式のDocumentationで確認できます。

おまけ

mongoの実行結果をcsvに出力

mongo Shellを使えば検索結果をcsvに出力することができます。
mongo Shellからjsファイルを実行することができるので、そのファイルに実行コードを記載します。

sample.js
var results = db.getCollection("unicorns").find({time:{"$gte" : ISODate("2019-01-01T00:00:00+09:00"),"$lte" : ISODate("2019-01-02T00:00:00+09:00")}, });

// タイトル
print("_id"
      + '\t' + "name"
      );

// 検索結果整形
results.forEach(function(result) {
  if (result) {
    print(result._id
          + '\t"' + result.name +'"'
          );
  }
});

あとはWindowsで環境PATHを設定していれば
下記をコマンドプロンプトで実行するとファイルが出力されます。

mongo --username [ログインユーザ名] --password [パスワード] --authenticationDatabase [DB名] --host [ホスト名] .\sample.js > [出力ファイル名]

目的のリストを作成したり、Excelなんかでリストをこねくり回したりしたいときなんかに便利です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?