前言:公司使用mongodb存储全量历史消息,主要分为消息表t_message[msg_id],和用户同步表t_user_message[user_uuid,msg_id,source_device,seq]。例如用户a给用户b发送一条消息,会在t_message存储消息原文产生一条数据,同时在t_user_message保存2条消息,其中用户a会记录source_device,例如app、pc、web等,查询用户离线消息的逻辑是 where user_uuid = #user_uuid and seq > #seq and source_device != #source_device,假设此时用户a是app发送的,会同步给非app登录的其他设备。