定義
$listSessionsconfigデータベース内のsystem.sessionsコレクションに保存されているすべてのセッションを一覧表示します。 これらのセッションは、MongoDB 配置のすべてのノードに表示されます。重要
ユーザーが
mongodまたはmongosインスタンスでセッションを作成すると、セッションのレコードは最初はインスタンスのメモリ内にのみ存在します。つまり、レコードは インスタンスに対してローカルです。 インスタンスはキャッシュされたセッションをconfigデータベースのsystem.sessionsコレクションに定期的に同期します。同期されると、$listSessionsと配置のすべてのノードに表示されます。 セッション レコードがsystem.sessionsコレクションに存在するまでは、$listLocalSessions操作によってのみセッションを一覧表示できます。$listSessionsを実行するには、パイプラインの最初のステージである必要があります。このステージの構文は、次のとおりです。
{ $listSessions: <document> } $listSessionsステージは、次のいずれかの内容を持つドキュメントを取得します。フィールド説明{ }アクセス制御を使用して実行している場合、 は現在認証されているユーザーのすべてのセッションを返します。
アクセス制御なしで実行している場合、 はすべてのセッションを返します。
{ users: [ { user: <user>, db: <db> }, ... ] }指定されたユーザーのすべてのセッションを返します。 アクセス制御を使用して実行中の場合、認証されたユーザーは、他のユーザーのセッションを一覧表示するには、クラスターに対して
listSessionsアクションの特権を持っている必要があります。{ allUsers: true }すべてのユーザーのすべてのセッションを返します。 アクセス制御を使用して実行している場合、認証されたユーザーにはクラスターでの
listSessionsアクション権限が必要です。
制限事項
$listSessions トランザクションでは許可されていません。
例
すべてのセッションを一覧表示
system.sessionsコレクションから、次の集計操作はすべてのセッションを一覧表示します。
注意
アクセス制御を使用して実行中の場合、現在のユーザーにはクラスターに対するlistSessionsアクションの特権が必要です。
use config db.system.sessions.aggregate( [ { $listSessions: { allUsers: true } } ] )
指定されたユーザーのすべてのセッションを一覧表示
次の集計操作では、 system.sessionsコレクションから、指定されたユーザーmyAppReader@testのすべてのセッションが一覧表示されます。
注意
アクセス制御を使用して実行中で、現在のユーザーが指定されたユーザーでない場合、現在のユーザーにはクラスターに対するlistSessionsアクションの権限が必要です。
use config db.system.sessions.aggregate( [ { $listSessions: { users: [ {user: "myAppReader", db: "test" } ] } } ] )
現在のユーザーのすべてのセッションを一覧表示
system.sessionsコレクションから、次の集計操作は、アクセス制御を使用して実行された場合、現在のユーザーのすべてのセッションを一覧表示します。
use config db.system.sessions.aggregate( [ { $listSessions: { } } ] )
アクセス制御なしで実行すると、操作はすべてのセッションを一覧表示します。
MongoDB Node.jsドライバーを使用して $listSessions ステージを集計パイプラインに追加するには、パイプラインオブジェクトで $listSessions 演算子を使用します。system.sessionsコレクションでパイプラインを実行します。
すべてのセッションを一覧表示
次の集計操作は、すべてのセッションを一覧表示します。
const db = client.db("config"); const collection = db.collection("system.sessions"); const pipeline = [{ $listSessions: { allUsers: true } }]; const cursor = collection.aggregate(pipeline); return cursor;
注意
アクセス制御を使用して実行中の場合、現在のユーザーにはクラスターに対するlistSessionsアクションの特権が必要です。
指定されたユーザーのすべてのセッションを一覧表示
次の集計操作では、指定されたユーザー myAppReader@test のすべてのセッションが一覧表示されます。
const db = client.db("config"); const collection = db.collection("system.sessions"); const pipeline = [ { $listSessions: { users: [{ user: "myAppReader", db: "test"}] } } ]; const cursor = collection.aggregate(pipeline); return cursor;
注意
アクセス制御を使用して実行中で、現在のユーザーが指定されたユーザーでない場合、現在のユーザーにはクラスターに対するlistSessionsアクションの権限が必要です。
現在のユーザーのすべてのセッションを一覧表示
アクセス制御を使用して実行すると、次の集計操作には現在のユーザーのすべてのセッションが一覧表示されます。
const db = client.db("config"); const collection = db.collection("system.sessions"); const pipeline = [{ $listSessions: {} }]; const cursor = collection.aggregate(pipeline); return cursor;
アクセス制御なしで実行すると、操作はすべてのセッションを一覧表示します。