矩阵突触数据库中每个用户的房间数

Rooms per user in matrix synapse database

如何使用 synapse postgres 数据库获取用户当前加入的矩阵房间总数? (不包括用户已离开或被踢出或被禁止进入的房间)

我花了好几个小时来寻找这个,所以我认为它可能对其他人有帮助。

您可以获取用户当前加入的房间数查询 table user_stats_current:

SELECT joined_rooms FROM user_stats_current WHERE user_id='@myuser:matrix.example.com';

如果您想具体获取用户当前加入的房间的 ID,您可以使用 table current_state_events 就像在这个查询中:

SELECT room_id FROM current_state_events
WHERE state_key = '@myuser:matrix.example.com'
AND type = 'm.room.member'
AND membership = 'join';

更进一步,如果您不仅需要房间 ID,还需要房间名称,您可以添加 table room_stats_state,就像在其他查询中一样:

SELECT e.room_id, r.name
FROM current_state_events e
JOIN room_stats_state r USING (room_id)
WHERE e.state_key = '@myuser:matrix.example.com'
AND e.type = 'm.room.member'
AND e.membership = 'join';