定義
$listLocalSessionsmongodまたはmongosインスタンスによってメモリにキャッシュされたセッションを一覧表示します。重要
When a user creates a session on a
mongodormongosinstance, the record of the session initially exists only in-memory on the instance; i.e. the record is local to the instance. Periodically, the instance will sync its cached sessions to thesystem.sessionscollection in theconfigdatabase, at which time, they are visible to$listSessionsand all members of the deployment. Until the session record exists in thesystem.sessionscollection, you can only list the session via the$listLocalSessionsoperation.The
$listLocalSessionsoperation uses thedb.aggregate()method and not thedb.collection.aggregate().To run
$listLocalSessions, it must be the first stage in the pipeline.このステージの構文は、次のとおりです。
{ $listLocalSessions: <document> } The
$listLocalSessionsstage takes a document with one of the following contents:フィールド説明{ }アクセス制御を使用して実行している場合、 は現在認証されているユーザーのすべてのセッションを返します。
アクセス制御なしで実行している場合、 はすべてのセッションを返します。
{ 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: { } } ] )
アクセス制御なしで実行すると、操作にはすべてのローカル セッションが一覧表示されます。
MongoDB Node.jsドライバーを使用して $listLocalSessions ステージを集計パイプラインに追加するには、パイプラインオブジェクトで $listLocalSessions 演算子を使用します。
すべてのローカル セッションを一覧表示
次の集計操作は、すべてのローカル セッションを一覧表示します。
const pipeline = [{ $listLocalSessions: { allUsers: true } }]; const cursor = db.aggregate(pipeline); return cursor;
注意
アクセス制御を使用して実行中の場合、現在のユーザーにはクラスターに対するlistSessionsアクションの特権が必要です。
指定されたユーザーのすべてのローカル セッションを一覧表示
次の集計操作では、指定されたユーザー myAppReader@test のすべてのセッションが一覧表示されます。
const pipeline = [ { $listLocalSessions: { users: [{ user: "myAppReader", db: "test"}] } } ]; const cursor = db.aggregate(pipeline); return cursor;
注意
アクセス制御を使用して実行中で、現在のユーザーが指定されたユーザーでない場合、現在のユーザーにはクラスターに対するlistSessionsアクションの権限が必要です。
現在のユーザーのすべてのローカル セッションを一覧表示する
アクセス制御を使用して実行すると、次の集計操作には現在のユーザーのすべてのセッションが一覧表示されます。
const pipeline = [{ $listLocalSessions: {} }]; const cursor = db.aggregate(pipeline); return cursor;
アクセス制御なしで実行すると、操作にはすべてのローカル セッションが一覧表示されます。
出力
$listLocalSessions メモリにキャッシュされたセッションごとに 1 つのドキュメントを含むカーソルを返します。各ドキュメントには次のプロトタイプがあります。
{ _id: { id: <UUID>, uid: <BinData> }, lastUse: <date> }
フィールド | タイプ | 説明 |
|---|---|---|
| UUID | セッションの全域一意の識別子 (UUID)。 |
| BinData | セッションに関連付けられた認証されたユーザーの認証情報のハッシュ。 |
| date | セッションが最後に使用された日時。 |