You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
15 KiB
15 KiB
OpenIM MongoDB 集合说明
本文档基于当前代码实现整理(pkg/common/storage/database + pkg/common/storage/model),用于说明 OpenIM 使用的 MongoDB 集合、核心字段和用途。
说明
- 集合来源:
- 常量定义:
pkg/common/storage/database/name.go - 硬编码集合:
db.Collection("...")
- 常量定义:
- 字段口径:以结构体
bsontag 为准。 - 不包含测试代码中的临时集合(如
msg3、version_test)。
集合清单(按名称排序)
black
- 用途:用户拉黑关系。
- 核心结构体:
model.Black - 字段:
owner_user_id(string):拉黑关系所属用户block_user_id(string):被拉黑用户create_time(time.Time):创建时间add_source(int32):添加来源operator_user_id(string):操作人ex(string):扩展信息
conversation
- 用途:用户会话配置和会话序列范围。
- 核心结构体:
model.Conversation - 字段:
owner_user_id(string):会话所属用户conversation_id(string):会话 IDconversation_type(int32):会话类型user_id(string):单聊对端用户group_id(string):群聊群 IDrecv_msg_opt(int32):消息接收选项is_pinned(bool):是否置顶is_private_chat(bool):是否私聊burn_duration(int32):阅后即焚时长group_at_type(int32):群 @ 设置attached_info(string):附加信息ex(string):扩展信息max_seq(int64):会话最大序列号min_seq(int64):会话最小序列号create_time(time.Time):创建时间is_msg_destruct(bool):是否开启消息自毁msg_destruct_time(int64):消息自毁时间latest_msg_destruct_time(time.Time):最近自毁更新时间
conversation_version
- 用途:会话增量同步版本日志。
- 核心结构体:
model.VersionLogTable - 字段:
_id(primitive.ObjectID):主键d_id(string):维度 ID(通常 owner 维度)logs([]VersionLogElem):变更明细version(uint):当前版本deleted(uint):删除计数/版本标记last_update(time.Time):最后更新时间
logs元素字段(model.VersionLogElem):e_id(string):元素 IDstate(int32):状态(新增/删除/更新)version(uint):元素版本last_update(time.Time):元素更新时间
crypto_device(硬编码)
- 用途:端到端加密设备信息。
- 核心结构体:
model.CryptoDevice - 字段:
device_id(string):设备 IDuser_id(string):用户 IDplatform(string):平台device_model(string):设备型号app_version(string):应用版本virgil_identity(string):加密身份status(string):设备状态last_seen_at(time.Time):最近活跃时间create_time(time.Time):创建时间
friend
- 用途:好友关系与好友属性。
- 核心结构体:
model.Friend - 字段:
_id(primitive.ObjectID):主键owner_user_id(string):关系所属用户friend_user_id(string):好友用户remark(string):备注create_time(time.Time):创建时间add_source(int32):添加来源operator_user_id(string):操作人ex(string):扩展信息is_pinned(bool):是否置顶is_muted(bool):是否免打扰mute_duration(int64):免打扰时长mute_end_time(int64):免打扰结束时间
friend_request
- 用途:好友申请记录。
- 核心结构体:
model.FriendRequest - 字段:
from_user_id(string):申请人to_user_id(string):被申请人handle_result(int32):处理结果req_msg(string):申请附言create_time(time.Time):申请时间handler_user_id(string):处理人handle_msg(string):处理说明handle_time(time.Time):处理时间ex(string):扩展信息
friend_version
- 用途:好友列表版本日志(增量同步)。
- 核心结构体:
model.VersionLogTable - 字段:同
conversation_version
group
- 用途:群资料与群权限配置。
- 核心结构体:
model.Group - 字段:
group_id(string):群 IDgroup_name(string):群名notification(string):群公告introduction(string):群介绍face_url(string):群头像create_time(time.Time):创建时间ex(string):扩展信息status(int32):群状态creator_user_id(string):创建者group_type(int32):群类型need_verification(int32):入群验证策略look_member_info(int32):成员信息可见策略apply_member_friend(int32):成员加好友策略notification_update_time(time.Time):公告更新时间notification_user_id(string):公告更新人allow_send_msg(int32):发言权限allow_pin_msg(int32):置顶消息权限allow_add_member(int32):拉人权限allow_edit_group_info(int32):编辑群资料权限
group_join_version
- 用途:群成员入群事件版本日志。
- 核心结构体:
model.VersionLogTable - 字段:同
conversation_version
group_key_event(硬编码)
- 用途:群密钥版本事件。
- 核心结构体:
model.GroupKeyEvent - 字段:
event_id(string):事件 IDgroup_id(string):群 IDgroup_key_version(int64):群密钥版本event_type(string):事件类型operator_user_id(string):操作人create_time(time.Time):事件时间
group_key_version(硬编码)
- 用途:记录群当前密钥版本。
- 核心结构体:
model.GroupKeyVersion - 字段:
group_id(string):群 IDgroup_key_version(int64):当前密钥版本
group_member
- 用途:群成员关系与成员属性。
- 核心结构体:
model.GroupMember - 字段:
group_id(string):群 IDuser_id(string):用户 IDnickname(string):群昵称face_url(string):头像role_level(int32):角色等级join_time(time.Time):入群时间join_source(int32):入群来源inviter_user_id(string):邀请人operator_user_id(string):操作人mute_end_time(time.Time):禁言结束时间ex(string):扩展信息
group_member_version
- 用途:群成员版本日志。
- 核心结构体:
model.VersionLogTable - 字段:同
conversation_version
group_request
- 用途:入群申请记录。
- 核心结构体:
model.GroupRequest - 字段:
user_id(string):申请人group_id(string):目标群handle_result(int32):处理结果req_msg(string):申请信息handled_msg(string):处理说明req_time(time.Time):申请时间handle_user_id(string):处理人handled_time(time.Time):处理时间join_source(int32):入群来源inviter_user_id(string):邀请人ex(string):扩展信息
log
- 用途:客户端日志上报元数据。
- 核心结构体:
model.Log - 字段:
log_id(string):日志 IDplatform(string):平台user_id(string):用户 IDcreate_time(time.Time):创建时间url(string):日志文件 URLfile_name(string):文件名system_type(string):系统类型app_framework(string):应用框架version(string):版本ex(string):扩展信息
msg
- 用途:聊天消息主存储(按会话 + 分片存放)。
- 核心结构体(分层):
model.MsgDocModelmodel.MsgInfoModelmodel.MsgDataModelmodel.RevokeModelmodel.OfflinePushModel
- 字段:
MsgDocModeldoc_id(string):文档 ID(会话 + 分片序号)msgs([]*MsgInfoModel):消息数组
MsgInfoModelmsg(*MsgDataModel):消息体revoke(*RevokeModel):撤回信息del_list([]string):逻辑删除用户列表is_read(bool):读状态
MsgDataModelsend_id(string):发送者recv_id(string):接收者(单聊)group_id(string):群 ID(群聊)client_msg_id(string):客户端消息 IDserver_msg_id(string):服务端消息 IDsender_platform_id(int32):发送平台sender_nickname(string):发送者昵称sender_face_url(string):发送者头像session_type(int32):会话类型msg_from(int32):消息来源content_type(int32):内容类型content(string):消息内容seq(int64):消息序号send_time(int64):发送时间create_time(int64):创建时间status(int32):状态is_read(bool):已读标记options(map[string]bool):扩展选项offline_push(*OfflinePushModel):离线推送at_user_id_list([]string):@用户列表attached_info(string):附加信息ex(string):扩展信息
RevokeModelrole(int32):撤回角色user_id(string):撤回人 IDnickname(string):撤回人昵称time(int64):撤回时间
OfflinePushModeltitle(string):推送标题desc(string):推送描述ex(string):扩展ios_push_sound(string):iOS 声音ios_badge_count(bool):iOS 角标策略
phone_sn_info
- 用途:手机号与发送状态信息。
- 核心结构体:
model.PhoneSNInfo - 字段:
phone(string):手机号user_id(int64):关联用户 IDis_snd(bool):业务发送标识send_count(int64):最近 1 分钟发送计数(当前实现新增)update_time(int64):更新时间(毫秒)
s3
- 用途:对象存储文件元数据。
- 核心结构体:
model.Object - 字段:
name(string):对象名user_id(string):上传用户hash(string):文件哈希engine(string):存储引擎key(string):对象 keysize(int64):文件大小content_type(string):MIME 类型group(string):分组create_time(time.Time):创建时间
seq
- 用途:会话级消息序列范围。
- 核心结构体:
model.SeqConversation - 字段:
conversation_id(string):会话 IDmax_seq(int64):最大序列min_seq(int64):最小序列
seq_user
- 用途:用户会话维度消息序列与已读位点。
- 核心结构体:
model.SeqUser - 字段:
user_id(string):用户 IDconversation_id(string):会话 IDmin_seq(int64):最小序列max_seq(int64):最大序列read_seq(int64):已读序列
signal_invitation
- 用途:音视频邀请信令(支持 TTL 过期清理)。
- 核心结构体:
model.SignalInvitation - 字段:
room_id(string):房间 IDinviter_user_id(string):邀请人invitee_user_id_list([]string):被邀请人列表custom_data(string):自定义数据group_id(string):群 IDtimeout(int32):超时时间media_type(string):媒体类型platform_id(int32):平台 IDsession_type(int32):会话类型initiate_time(int64):发起时间busy_line_user_id_list([]string):忙线用户offline_push_title(string):离线推送标题offline_push_desc(string):离线推送描述offline_push_ex(string):离线推送扩展create_time(int64):创建时间expire_at(time.Time):过期时间(TTL)
signal_record
- 用途:音视频通话记录。
- 核心结构体:
model.SignalRecord - 字段:
sid(string):记录 IDroom_id(string):房间 IDfile_name(string):文件名media_type(string):媒体类型session_type(int32):会话类型inviter_user_id(string):邀请人inviter_user_nickname(string):邀请人昵称group_id(string):群 IDgroup_name(string):群名inviter_user_id_list([]string):参与用户列表send_id(string):发送者recv_id(string):接收者create_time(int64):创建时间end_time(int64):结束时间file_size(string):文件大小file_url(string):文件 URL
spam_report
- 用途:垃圾消息/用户举报与处理记录。
- 核心结构体:
model.SpamReport - 字段:
_id(primitive.ObjectID):主键report_id(string):举报 IDreporter_user_id(string):举报人reported_user_id(string):被举报人conversation_id(string):会话 IDclient_msg_id(string):客户端消息 IDseq(int64):消息序号reason_type(int32):举报类型reason(string):举报原因status(int32):处理状态create_time(time.Time):创建时间handle_time(time.Time):处理时间handler_user_id(string):处理人ex(string):扩展信息
user
- 用途:用户主资料与可见性/通话/消息设置。
- 核心结构体:
model.User - 字段:
user_id(string):用户 IDnickname(string):昵称face_url(string):头像ex(string):扩展app_manger_level(int32):应用管理级别global_recv_msg_opt(int32):全局消息接收选项create_time(time.Time):创建时间phone(string):手机号phone_visibility(int32):手机号可见性call_accept_setting(int32):通话接受策略msg_receive_setting(int32):消息接收策略
userCommands(硬编码)
- 用途:用户命令记录。
- 数据来源:
mgo/user.go内部通过bson.M直接操作。 - 字段:
userID(string):用户 IDtype(int32):命令类型uuid(string):命令唯一 IDcreateTime(int64):创建时间(秒)value(string):值ex(string):扩展
user_global_black_list
- 用途:全局黑名单。
- 核心结构体:
model.UserGlobalBlack - 字段:
user_id(string):被封禁用户 IDnickname(string):昵称operator_id(string):操作人reason(string):原因create_time(time.Time):创建时间
常见索引说明(摘要)
msg:doc_id唯一索引。conversation:(owner_user_id, conversation_id)唯一索引。friend:(owner_user_id, friend_user_id)唯一索引。group_member:(group_id, user_id)唯一索引。signal_invitation:room_id唯一索引,expire_atTTL 索引。phone_sn_info:phone唯一索引。spam_report:report_id唯一索引。