【MongoDB】接続中のクライアント一覧を確認する方法
MongoDBで接続中のクライアントの一覧を確認するには、currentOp()メソッドを使用します。引数にtrueを設定して実行することで、アイドル状態の接続も含めたすべてのクライアント情報を取得できます。結果は配列形式で返されるため、clientフィールドを手がかりに反復処理を行うことで、各クライアントの詳細を確認できます。
currentOp()の実行方法
まず、mongoシェルで以下のコマンドを実行します。
> db.currentOp(true)
出力結果の確認
以下は実行結果の出力例です。この例ではlocalhostから接続しているため、クライアントのIPアドレスは「127.0.0.1」と表示されています。この出力には、サーバーに接続しているすべてのクライアントの情報が含まれています。
{
"inprog" : [
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "conn1",
"connectionId" : 1,
"client" : "127.0.0.1:61787",
"appName" : "MongoDB Shell",
"clientMetadata" : {
"application" : {
"name" : "MongoDB Shell"
},
"driver" : {
"name" : "MongoDB Internal Client",
"version" : "4.0.5"
},
"os" : {
"type" : "Windows",
"name" : "Microsoft Windows 10",
"architecture" : "x86_64",
"version" : "10.0 (build 17134)"
}
},
"active" : true,
"currentOpTime" : "2019-03-30T05:13:34.296+0530",
"opid" : 12538,
"lsid" : {
"id" : UUID("da370b0f-093a-45f3-b1fe-697daca8ccd2"),
"uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=")
},
"secs_running" : NumberLong(0),
"microsecs_running" : NumberLong(160815),
"op" : "command",
"ns" : "admin.$cmd.aggregate",
"command" : {
"currentOp" : 1,
"$all" : true,
"lsid" : {
"id" : UUID("da370b0f-093a-45f3-b1fe-697daca8ccd2")
},
"$db" : "admin"
},
"numYields" : 0,
"locks" : {},
"waitingForLock" : false,
"lockStats" : {}
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "LogicalSessionCacheRefresh",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "SessionKiller",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "TTLMonitor",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "free_mon",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "freemon-0",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "startPeriodicThreadToAbortExpiredTransactions",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "WTCheckpointThread",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "ftdc",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "WTJournalFlusher",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "clientcursormon",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
},
{
"host" : "DESKTOP-QN2RB3H:27017",
"desc" : "initandlisten",
"active" : false,
"currentOpTime" : "2019-03-30T05:13:34.296+0530"
}
],
"ok" : 1
}
主要なフィールドの意味
出力結果には多くの情報が含まれていますが、特に確認しておきたい主なフィールドは以下の通りです。
- host:MongoDBサーバーのホスト名とポート番号
- desc:接続またはスレッドの説明(例:conn1)
- connectionId:接続を識別するID
- client:クライアント側のIPアドレスとポート番号
- appName:接続元アプリケーションの名前
- clientMetadata:ドライバーのバージョンやOS情報など、クライアントに関するメタデータ
- active:現在操作が実行中かどうか(true/false)
- opid:操作を識別するID
- secs_running / microsecs_running:操作の実行時間(秒/マイクロ秒)
内部スレッドに注意
出力には「LogicalSessionCacheRefresh」「TTLMonitor」「WTCheckpointThread」など、clientフィールドを持たないエントリも含まれています。これらは外部からのクライアント接続ではなく、MongoDBサーバーが内部的に動作させているバックグラウンドスレッドです。実際のクライアント接続のみを確認したい場合は、clientフィールドが存在するエントリに注目するとよいでしょう。
-
AndroidでWi-Fi接続状態を取得する方法【サンプルコード付きで解説】
はじめに この記事では、AndroidアプリでWi-Fiの接続状態を取得し、画面に表示する方法を解説します。ConnectivityManagerとNetworkInfoを活用することで、「接続済み」「切断中」「接続中」などの詳細なステータスを簡単に確認できます。 ステップ1:新規プロジェクトの作成 まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」⇒「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。 ステップ2:レイアウトファイル(activity_main.xml)の編集 res/layout/activ
-
MongoDBで重複するIDごとの評価(レーティング)平均を取得する方法
MongoDBで重複するIDごとの評価平均を取得する方法MongoDBで平均値を計算するには、集計フレームワーク(Aggregation Pipeline)の $avg 演算子を使用します。本記事では、重複する id を持つドキュメントから、IDごとの評価(rating)の平均値を求める手順を、実際のコード例とともにわかりやすく解説します。1. サンプルコレクションの作成まず、insertOne() メソッドを使って、重複する id とそれぞれの評価値を持つドキュメントをコレクションに登録します。一部のドキュメントには評価として null が設定されている点に注目してください。> db.