Definição
$listSessionsLista todas as sessões armazenadas na coleção
system.sessionsno banco de dados doconfig. Essas sessões são visíveis para todos os membros do sistema do MongoDB.Importante
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.To run
$listSessions, it must be the first stage in the pipeline.O estágio tem a seguinte sintaxe:
{ $listSessions: <document> } The
$listSessionsstage takes a document with one of the following contents:CampoDescrição{ }Se estiver executando com controle de acesso, retorna todas as sessões para o usuário autenticado atual.
Se estiver executando sem controle de acesso, retorne todas as sessões.
{ users: [ { user: <user>, db: <db> }, ... ] }Retorna todas as sessões para os usuários especificados. Se estiver executando com controle de acesso, o usuário autenticado deverá ter privilégios com a ação
listSessionsno cluster para listar sessões para outros usuários.{ allUsers: true }Retorna todas as sessões para todos os usuários. Se estiver executando com controle de acesso, o usuário autenticado deverá ter privilégios com a ação
listSessionsno cluster.
Restrições
$listSessions não é permitido em transações.
Exemplos
Listar todas as sessões
Na coleção system.sessions, a seguinte operação de aggregation lista todas as sessões:
Observação
Se estiver executando com controle de acesso, o usuário atual deve ter privilégios com a ação listSessions no cluster.
use config db.system.sessions.aggregate( [ { $listSessions: { allUsers: true } } ] )
Listar todas as sessões para os usuários especificados
Na coleção system.sessions, a seguinte operação de aggregation lista todas as sessões para o usuário especificado myAppReader@test:
Observação
Se estiver executando com controle de acesso e o usuário atual não for o usuário especificado, o usuário atual deverá ter privilégios com a ação listSessions no cluster.
use config db.system.sessions.aggregate( [ { $listSessions: { users: [ {user: "myAppReader", db: "test" } ] } } ] )
Listar todas as sessões para o usuário atual
Na coleção system.sessions, a seguinte operação de aggregation lista todas as sessões para o usuário atual se executar com controle de acesso:
use config db.system.sessions.aggregate( [ { $listSessions: { } } ] )
Se executar sem o controle de acesso, a operação listará todas as sessões.
Para usar o driver Node.js do MongoDB para adicionar um estágio $listSessions a um pipeline de agregação , use o operador $listSessions em um objeto de pipeline. Execute o pipeline na coleção system.sessions.
Listar todas as sessões
A seguinte operação de agregação lista todas as sessões:
const db = client.db("config"); const collection = db.collection("system.sessions"); const pipeline = [{ $listSessions: { allUsers: true } }]; const cursor = collection.aggregate(pipeline); return cursor;
Observação
Se estiver executando com controle de acesso, o usuário atual deve ter privilégios com a ação listSessions no cluster.
Listar todas as sessões para os usuários especificados
A seguinte operação de agregação lista todas as sessões para o usuário especificado 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;
Observação
Se estiver executando com controle de acesso e o usuário atual não for o usuário especificado, o usuário atual deverá ter privilégios com a ação listSessions no cluster.
Listar todas as sessões para o usuário atual
Se for executada com controle de acesso, a seguinte operação de agregação listará todas as sessões do usuário atual:
const db = client.db("config"); const collection = db.collection("system.sessions"); const pipeline = [{ $listSessions: {} }]; const cursor = collection.aggregate(pipeline); return cursor;
Se executar sem o controle de acesso, a operação listará todas as sessões.
Saída
$listSessions retorna um cursor com um documento por sessão. Cada documento tem o seguinte protótipo:
{ _id: { id: <UUID>, uid: <BinData> }, lastUse: <date> }
Campo | Tipo | Descrição |
|---|---|---|
| UUID | O identificador universalmente exclusivo (UUID) da sessão. |
| BinData | Um hash das credenciais do usuário autenticado associadas à sessão. |
| data | A data e a hora em que a sessão foi usada pela última vez. |