Definición
$listSessionsEnumera todas las sesiones almacenadas en el
system.sessionsColección en laconfigbase de datos. Estas sesiones son visibles para todos los miembros de la implementación de MongoDB.Importante
Cuando un usuario crea una sesión en una instancia de
mongodomongos, el registro de la sesión existe inicialmente únicamente en la memoria de la instancia; es decir, el registro es local a la instancia. Periódicamente, la instancia sincronizará sus sesiones en caché con la colecciónsystem.sessionsen la base de datosconfig. En ese momento, serán visibles para$listSessionsy para todos los miembros de la implementación. Hasta que el registro de la sesión exista en la colecciónsystem.sessions, solo puedes listar la sesión mediante la operación$listLocalSessions.Para ejecutar, debe ser la primera etapa del
$listSessionsproceso.La etapa tiene la siguiente sintaxis:
{ $listSessions: <document> } La etapa toma un documento con uno de los siguientes
$listSessionscontenidos:CampoDescripción{ }Si se ejecuta con control de acceso, devuelve todas las sesiones del usuario autenticado actual.
Si se ejecuta sin control de acceso, devuelve todas las sesiones.
{ users: [ { user: <user>, db: <db> }, ... ] }Devuelve todas las sesiones de los usuarios especificados. Si se ejecuta con control de acceso, el usuario autenticado debe tener privilegios con
listSessionsla acción en el clúster para listar las sesiones de otros usuarios.{ allUsers: true }Devuelve todas las sesiones de todos los usuarios. Si se ejecuta con control de acceso, el usuario autenticado debe tener privilegios con la acción en el
listSessionsclúster.
Restricciones
$listSessions No está permitido en las transacciones.
Ejemplos
Listar todas las sesiones
De la colección, la siguiente operación de agregación enumera todas las system.sessions sesiones:
Nota
Si se ejecuta con control de acceso, el usuario actual debe tener privilegios con la acción en el listSessions clúster.
use config db.system.sessions.aggregate( [ { $listSessions: { allUsers: true } } ] )
Listar todas las sesiones para los usuarios especificados
De la colección, la siguiente operación de agregación enumera todas las sesiones del system.sessions usuario myAppReader@test especificado:
Nota
Si se ejecuta con control de acceso y el usuario actual no es el usuario especificado, el usuario actual debe tener privilegios con la acción en el listSessions clúster.
use config db.system.sessions.aggregate( [ { $listSessions: { users: [ {user: "myAppReader", db: "test" } ] } } ] )
Listar todas las sesiones del usuario actual
De la colección, la siguiente operación de agregación system.sessions enumera todas las sesiones del usuario actual si se ejecuta con control de acceso:
use config db.system.sessions.aggregate( [ { $listSessions: { } } ] )
Si se ejecuta sin control de acceso, la operación enumera todas las sesiones.
Para usar el controlador Node.js de MongoDB y añadir una $listSessions etapa a una canalización de agregación, utilice el $listSessions operador en un objeto de canalización. Ejecute la canalización en la system.sessions colección.
Listar todas las sesiones
La siguiente operación de agregación enumera todas las sesiones:
const db = client.db("config"); const collection = db.collection("system.sessions"); const pipeline = [{ $listSessions: { allUsers: true } }]; const cursor = collection.aggregate(pipeline); return cursor;
Nota
Si se ejecuta con control de acceso, el usuario actual debe tener privilegios con la acción en el listSessions clúster.
Listar todas las sesiones para los usuarios especificados
La siguiente operación de agregación enumera todas las sesiones del usuario 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;
Nota
Si se ejecuta con control de acceso y el usuario actual no es el usuario especificado, el usuario actual debe tener privilegios con la acción en el listSessions clúster.
Listar todas las sesiones del usuario actual
Si se ejecuta con control de acceso, la siguiente operación de agregación enumera todas las sesiones del usuario actual:
const db = client.db("config"); const collection = db.collection("system.sessions"); const pipeline = [{ $listSessions: {} }]; const cursor = collection.aggregate(pipeline); return cursor;
Si se ejecuta sin control de acceso, la operación enumera todas las sesiones.