メモです
NoSQLで有名なDBです
会社のシステム的には使っているのですが
使いこなせる人が辞めたり、移動したりして今は誰も使いこなせない状態です
今後、集計をおこなうために勉強した
クライアントツール(gui)のインストール
Robo 3T - formerly Robomongo — native MongoDB management tool (Admin UI)
→ ダウンロードで環境にあわせたソフトをインストール
接続は直接指定もできるのですが、ローカルからとそのネットワークのみしか接続できなかったので
SSHを踏み台サーバーとして接続する方式で接続した
これはmysqlのツールと同じ
接続するとDBがあるので
テーブル(コレクション?)一覧が表示されるので
ダブルクリックすると取得するJSが表示される
db.getCollection('login_history').find({})
そちらを修正していく
whereの指定方法
db.getCollection('login_history') .find({ userId :"5914037b"}) .sort({_id: -1}) .limit(1)
findの次のカッコで指定できます
{ userId :"5914037b"}
上記の場合はuseridが5914037bのデータを取得しています
ソートもカラムで指定できる
-1が降順 1が昇順
条件が入れ子の場合の指定方法
データが入れ子の場合の条件指定は単純に
.(ドット)でつないでいくだけです
{ "client" : { "platform" : "iOS", "version" : "11.12.13", "userId" : "c871eb946596b255", "tttt" : "TTTTTT", "ttt1" : "TTTTTT", "ttt2" : "TTTTTT", "ttt3" : "TTTTTT", "ttt4" : "TTTTTT" } }
上記の場合のデータを条件で取得するクエリーは以下のようになる
db.getCollection('login_history') .find({ "client.userId" :"5914037b"}) .sort({_id: -1}) .limit(1)
出力したカラムを指定する場合
db.getCollection('login_history') .find( { "client.userId" :"5914037b"}, { "client.userIdId": 1 , "client.platform": 1 , "client.version": 1 , _id: 0 } ) .sort({_id: -1}) .limit(1)
条件のあとに出力したいカラムを指定する
デフォルトだと_idがでるのでそれはいらないので消す
参考URL
www.yoheim.net