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