Definición
$listSessionsEnumera todas las sesiones almacenadas en el Colección
system.sessionsen la base de datosconfig. Estas sesiones son visibles para todos los nodos 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
$listSessions, debe ser la primera etapa en la pipeline.La etapa tiene la siguiente sintaxis:
{ $listSessions: <document> } La etapa
$listSessionstoma un documento con uno de los siguientes contenidos:CampoDescripción{ }Si se ejecuta con control de acceso, devuelve todas las sesiones para el usuario autenticado actual.
Si se ejecuta sin control de acceso, se devuelven 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 la acción
listSessionsen el clúster para listar 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
listSessionsen el clúster.
Restricciones
$listSessions no se permite en las transacciones.
Ejemplos
Listar todas las sesiones
De la colección system.sessions, la siguiente operación de agregación enumera todas las sesiones:
Nota
Si se ejecuta con control de acceso, el usuario actual debe tener privilegios con la acción listSessions en el clúster.
use config db.system.sessions.aggregate( [ { $listSessions: { allUsers: true } } ] )
Enumerar todas las sesiones para los usuarios especificados
Desde la colección system.sessions, la siguiente operación de agregación lista todas las sesiones para el usuario especificado myAppReader@test:
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 de listSessions en el clúster.
use config db.system.sessions.aggregate( [ { $listSessions: { users: [ {user: "myAppReader", db: "test" } ] } } ] )
Lista todas las sesiones para el usuario actual.
Desde la colección system.sessions, la siguiente operación de agregación enumera todas las sesiones para el 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 lista todas las sesiones.
Para utilizar el driver Node.js de MongoDB para añadir una etapa $listSessions a un pipeline de agregación, utiliza el operador $listSessions en un objeto pipeline. Ejecuta el pipeline en la colección system.sessions.
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 listSessions en el clúster.
Enumerar todas las sesiones para los usuarios especificados
La siguiente operación de agregación enumera todas las sesiones para el 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 de listSessions en el clúster.
Lista todas las sesiones para el usuario actual.
Si se ejecuta con control de acceso, la siguiente operación de agregación lista todas las sesiones para el 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 muestra todas las sesiones.