不该直接存成大文档;应将每次点击作为独立文档存储,精简字段、建合理索引,并用唯一复合索引实现去重,配合覆盖索引优化聚合查询,按需预聚合。点击事件该不该直接存成大文档?别把每次点击都塞进一个嵌套数组里——这是最典型的“日志当文档”误用。MongoDB 单文档上限 64MB,但更现实的瓶颈是:一旦 clicks 数组涨到几千条,$push 写入会变慢,$elemMatch 查询变卡,连 db.collection.stats() 都可能因文档膨胀而失真。真正该做的,是把「点击」当作原子事件独立建模:每个点击事件存为一条独立文档,字段精简: { ad_id: ObjectId, user_id: "u_123", timestamp: ISODate("..."), ip: "192.168.1.1", ua_hash: "a1b2c3..." }去掉冗余字段(如完整 user_agent 字符串),改用哈希值 + 索引,省空间也提速避免在广告文档里用 clicks: [...] 嵌入——这会让广告文档随时间不可控膨胀,且无法对“过去24小时所有点击”做高效聚合如何低成本实现点击去重?去重不是靠应用层查一遍再写,而是靠 MongoDB 原生约束和结构设计。核心思路:把“用户 × 广告 × 时间窗口”变成唯一键,让数据库自己拦住重复。实操上分两步走:定义自然去重粒度,比如“同一用户 15 分钟内对同一广告的多次点击只记一次”,那么复合唯一索引就是:db.clicks.createIndex({ ad_id: 1, user_id: 1, window_start: 1 }, { unique: true }),其中 window_start 是 timestamp 向下取整到最近 15 分钟(如 new Date(Math.floor(ts.getTime() / 900000) * 900000))写入时用 insertOne 而非 updateOne + upsert,配合 writeConcern: "majority",失败即说明已存在,无需额外查切忌用 find().count() 判断是否存在——高并发下必然漏判,且性能崩盘聚合查询慢?先检查索引覆盖和时间范围广告后台最常跑的是“某广告近7天点击量”或“某渠道各广告 CTR”,这类聚合慢,90% 不是管道写得差,而是没让索引扛住过滤和排序。 跃问 跃问是由阶跃星辰开发的免费AI智能问答助手,随时帮你智能搜索、高效阅读、识图理解、和你畅聊感兴趣的话题。
MongoDB广告点击追踪如何建模_点击事件聚合与去重记录
张小明
前端开发工程师
3步完成网易云音乐NCM格式转换:让加密音乐重获自由播放
3步完成网易云音乐NCM格式转换:让加密音乐重获自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为下载的网易云音乐只能在官方客户端播放而烦恼吗?NCM格式解密工具为你带来真正的音乐自由。ncmdum…
别再死记硬背了!用这5个生活中的例子,轻松理解操作系统核心概念(考研复试/面试必看)
用生活场景秒懂操作系统:5个类比让考研面试不再卡壳 每次翻开操作系统教材,看到满屏的"进程调度""虚拟内存""死锁检测"是不是感觉头大?别急着背概念,其实这些抽象理论就藏在你的日常生活里。想象一…
告别迷茫!手把手教你用Keil5为STM32F407搭建第一个工程(附标准库文件搬运指南)
STM32F407工程搭建实战:从零构建标准库工程框架 第一次接触STM32开发时,面对官方固件库中密密麻麻的文件,很多初学者都会感到无从下手。本文将带你深入理解STM32F407标准库工程的结构设计,手把手教你如何合理组织工程目录&#x…
GLM-OCR与数据结构优化:提升批量图片处理效率的队列设计
GLM-OCR与数据结构优化:提升批量图片处理效率的队列设计 你有没有遇到过这样的场景?手头有几千张、甚至几万张图片,需要快速、准确地从中提取文字信息。无论是处理海量的商品图片、扫描文档,还是分析社交媒体上的图文内容&#x…
航顺HK32F030MF4P6实战:SWD引脚复用成普通IO或ADC的完整配置流程(附代码)
航顺HK32F030MF4P6开发实战:SWD引脚功能复用全解析与代码实现 在嵌入式开发中,IO资源紧张是工程师们经常面临的挑战。当项目需求超出芯片默认提供的GPIO数量时,如何合理复用特殊功能引脚就成为了解决问题的关键。航顺HK32F030MF4P6作为一款性…
如何快速掌握DS4Windows:让PS4手柄在Windows上发挥最大潜力的完整指南
如何快速掌握DS4Windows:让PS4手柄在Windows上发挥最大潜力的完整指南 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 想在Windows电脑上完美使用PS4手柄吗?DS4Win…