-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
listLocalSessions.txt
127 lines (85 loc) · 3.83 KB
/
listLocalSessions.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
==================
$listLocalSessions
==================
.. default-domain:: mongodb
.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:class: singlecol
Definition
----------
.. pipeline:: $listLocalSessions
.. versionadded:: 3.6
Lists the sessions cached in memory by the :binary:`~bin.mongod` or
:binary:`~bin.mongos` instance.
.. important::
When a user creates a session on a :binary:`~bin.mongod` or
:binary:`~bin.mongos` instance, 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 the :data:`system.sessions <config.system.sessions>`
collection in the ``config`` database, at which time, they are
visible to :pipeline:`$listSessions` and all members of the
deployment. Until the session record exists in the
``system.sessions`` collection, you can only list the session via
the :pipeline:`$listLocalSessions` operation.
The :pipeline:`$listLocalSessions` operation uses the :method:`db.aggregate()`
method and *not* the :method:`db.collection.aggregate()`.
To run :pipeline:`$listLocalSessions`, it must be the first stage in
the pipeline.
The stage has the following syntax:
.. code-block:: javascript
{ $listLocalSessions: <document> }
The :pipeline:`$listLocalSessions` stage takes a document with one
of the following contents:
.. list-table::
:widths: 70 30
* - ``{ }``
- If running with access control, returns all sessions for the
current authenticated user.
If running without access control, returns all sessions.
* - ``{ users: [ { user: <user>, db: <db> }, ... ] }``
- Returns all sessions for the specified users. If running with
access control, the authenticated user must have privileges
with :authaction:`listSession` action on the cluster to list
sessions for other users.
* - ``{ allUsers: true }``
- Returns all sessions for all users. If running with access
control, the authenticated user must have privileges with
:authaction:`listSession` action on the cluster.
Restrictions
------------
``$listLocalSessions`` is not allowed in :doc:`transactions </core/transactions>`.
Examples
--------
List All Local Sessions
~~~~~~~~~~~~~~~~~~~~~~~
From the connected :binary:`~bin.mongod`/:binary:`~bin.mongos` instance's
in-memory cache of sessions, the following aggregation operation lists
all sessions:
.. note::
If running with access control, the current user must have
privileges with :authaction:`listSession` action on the cluster.
.. code-block:: javascript
db.aggregate( [ { $listLocalSessions: { allUsers: true } } ] )
List All Local Sessions for the Specified Users
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
From the connected :binary:`~bin.mongod`/:binary:`~bin.mongos` instance's
in-memory cache, the following aggregation operation lists all the
sessions for the specified user ``myAppReader@test``:
.. note::
If running with access control and the current user is not the
specified user, the current user must
have privileges with :authaction:`listSession` action on the cluster.
.. code-block:: javascript
db.aggregate( [ { $listLocalSessions: { users: [ { user: "myAppReader", db: "test" } ] } } ] )
List All Local Sessions for the Current User
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
From the connected :binary:`~bin.mongod`/:binary:`~bin.mongos` instance's
in-memory cache, the following aggregation operation lists all sessions
for the current user **if** run with access control:
.. code-block:: javascript
db.aggregate( [ { $listLocalSessions: { } } ] )
If run **without** access control, the operation lists all local
sessions.