Definición
$listLocalSessionsEnumera las sesiones almacenadas en caché en la memoria por el
mongodomongosinstancia.Importante
Cuando un usuario crea una sesión en una instancia
mongodomongos, el registro de la sesión existe inicialmente solo en memoria en la instancia; es decir, el registro es local a la instancia. Periódicamente, la instancia sincronizará sus sesiones almacenadas en caché con la colecciónsystem.sessionsen la base de datosconfig, momento en el cual estarán visibles para los miembros de$listSessionsy todos los miembros del implementación. Hasta que el registro de la sesión exista en la colecciónsystem.sessions, sólo puedes listar la sesión a través de la operación$listLocalSessions.La operación
$listLocalSessionsutiliza el métododb.aggregate()y no eldb.collection.aggregate().Para ejecutar, debe ser la primera etapa del
$listLocalSessionsproceso.La etapa tiene la siguiente sintaxis:
{ $listLocalSessions: <document> } La etapa
$listLocalSessionstoma 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
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
listSessionsen el clúster.
Restricciones
$listLocalSessions no se permite en las transacciones.
Ejemplos
Listar todas las sesiones locales
Desde la memoria caché de sesiones en memoria de la instancia conectada mongod / mongos, 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 en el listSessions clúster.
db.aggregate( [ { $listLocalSessions: { allUsers: true } } ] )
Lista de todas las sesiones locales para los usuarios especificados
Desde la caché en memoria de la instancia conectada mongod o mongos, 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 en el listSessions clúster.
db.aggregate( [ { $listLocalSessions: { users: [ { user: "myAppReader", db: "test" } ] } } ] )
Listar todas las sesiones locales para el usuario actual
Desde la memoria caché en memoria de la instancia mongod / mongos conectada, la siguiente operación de agregación enumera todas las sesiones del usuario actual si se ejecuta con control de acceso:
db.aggregate( [ { $listLocalSessions: { } } ] )
Si se ejecuta sin control de acceso, la operación muestra todas las sesiones locales.
Para utilizar el controlador de MongoDB Node.js para agregar una etapa de $listLocalSessions a una canalización de agregación, utilice el Operador $listLocalSessions en un objeto de canalización.
Listar todas las sesiones locales
La siguiente operación de agregación muestra todas las sesiones locales:
const pipeline = [{ $listLocalSessions: { allUsers: true } }]; const cursor = db.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.
Lista de todas las sesiones locales para los usuarios especificados
La siguiente operación de agregación enumera todas las sesiones para el usuario especificado myAppReader@test:
const pipeline = [ { $listLocalSessions: { users: [{ user: "myAppReader", db: "test"}] } } ]; const cursor = db.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 locales para el usuario actual
Si se ejecuta con control de acceso, la siguiente operación de agregación enumera todas las sesiones del usuario actual:
const pipeline = [{ $listLocalSessions: {} }]; const cursor = db.aggregate(pipeline); return cursor;
Si se ejecuta sin control de acceso, la operación enumera todas las sesiones locales.