ゴール
タイトルの通り、この記事はmongoDBでfindして結果を参照できるまでをゴールとしています。
- mongoDBがどういうものかわからないけど、DBに登録されている情報を確認したい
- とりあえず触れる環境があるから試しにfindくらいしてみよう
といった方向けの記事です。
環境構築はもちろん、updateやinsertのお話も登場しませんのでご了承ください。
本記事はWindows環境を想定して記載しています。
findするための準備
ここでは下記の2つの方法でfindする方法を記載します。
- NoSQLBooster for MongoDB
- mongo Shell
NoSQLBooster for MongoDB
インストール
公式サイトから環境にあったものをダウンロード後にインストールしてください。
設定
- ServerにURLを設定してください
- Nameは任意の名称にしてください
その他の設定タブに関しては、環境によって入力する必要があるかと思います。
パスワードや秘密鍵などは管理者に確認をとって必要な設定を行ってください。
Test Connectionをクリックして、接続が成功すれば設定完了です。
サンプル画面(公式サイトより)
- Connection Treeに接続設定したDBが表示されます
-
test:unicornsタブがQuery実行対象のDB、そのしたのエリアが実行するQureyになります
- Qureyは直接入力するか、「Qurey」ボタンをクリックすればGUIベースで作成もできます
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ファイルを実行することができるので、そのファイルに実行コードを記載します。
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なんかでリストをこねくり回したりしたいときなんかに便利です!