惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
C
Check Point Blog
GbyAI
GbyAI
博客园 - 司徒正美
爱范儿
爱范儿
N
Netflix TechBlog - Medium
H
Hacker News: Front Page
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Security Latest
Security Latest
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - Franky
Recent Announcements
Recent Announcements
P
Privacy International News Feed
T
Tor Project blog
Y
Y Combinator Blog
有赞技术团队
有赞技术团队
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
G
GRAHAM CLULEY
The Hacker News
The Hacker News
N
News and Events Feed by Topic
I
Intezer
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
PCI Perspectives
PCI Perspectives
S
Secure Thoughts
P
Proofpoint News Feed
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
T
Threat Research - Cisco Blogs
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
DataBreaches.Net
Hacker News - Newest:
Hacker News - Newest: "LLM"
Last Week in AI
Last Week in AI
H
Help Net Security
L
LangChain Blog
大猫的无限游戏
大猫的无限游戏
Help Net Security
Help Net Security
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Google Online Security Blog
Google Online Security Blog
Cyberwarzone
Cyberwarzone
T
Tailwind CSS Blog
V
Vulnerabilities – Threatpost
Forbes - Security
Forbes - Security
Apple Machine Learning Research
Apple Machine Learning Research
O
OpenAI News
AWS News Blog
AWS News Blog
月光博客
月光博客

MongoDB

求助,谁会用那个 mongoDB 的云数据库啊,帮看看咋链接报错呢 - V2EX mongodb 自托管到底支持 vector 搜索吗 大佬们,急需请教,遇到大困难 - V2EX 有啥好用的 mongodb GUI 工具 - V2EX 大佬们,大问题请教,内存占满 - V2EX mongodump 出来的文件为什么比数据库本身大了一倍多?数据库大小只有 100GB, dump 出来的 bson 有 242GB,硬盘放不下了,怎么不占用硬盘空间备份数据到其它机器? - V2EX 想请教一下, mongoDB 是否适合海量数据存储 - V2EX MongoDB 如何优化到跟 MySQL 资源占用一样低? - V2EX 新人小白求教 - V2EX mongodb 新手虚心请教大佬们 - V2EX MongoDB 的 findOneAndUpdate 并发问题 - V2EX 求助大佬们: Mongo DB Compass 加 socks5 代理连不上 MongoDB Atlas 上的库 - V2EX 关于远程 mongodb 数据同步到本地 Elasticsearch 问题 - V2EX mongodb 日志文件巨大,怎么读取,以及怎么限制其大小? 江湖救急,冷备数据恢复 - V2EX 感觉 Mongodb 的权限管理有点复杂 - V2EX MongoDB 有什么比较新的入门教程吗? - V2EX 有没有觉得用 typescript 写 mongoose 好蛋疼 - V2EX mongodb 生产环境创建索引 - V2EX 刚用 mongodb,请教下类似 MySQL 的「select ... for update」大伙都是如何替代? - V2EX 求一个好用的 MongoDB 管理工具~ - V2EX mongodb 只剩硬盘上的数据库文件要怎么恢复 - V2EX 用不存在的字段的子字段 lookup 时,分组后该字段值会变成空对象,如何变成 null - V2EX 各位 javaer MongoDB 用的什么 orm - V2EX mongodb lookup 使用请教 - V2EX monodb 内存占满,进程退出 - V2EX 12 月 14 日上海新天地朗廷酒店,我司赞助的 MongoDB Day 上海站,欢迎大家联系我注册报名。 - V2EX mongoose 外键查询问题 - V2EX MongDB upsert 时新增的字段不能更新值 - V2EX 大佬们,请问如何通过 go.mongodb.org 的驱动允许集合分片啊,他的驱动不支持运行脚本吗? - V2EX nodejs mongodb - V2EX MongoDB 什么量子数据库 - V2EX 求助, Failed with error 'aborted',是什么情况,应该怎么处理 - V2EX 请教大佬: mongo4.2 多个事务修改 document 报 WriteConflict - V2EX mongodb 数据全量加载到 redis,怎样提升速度? - V2EX 请教一个查询统计的语句 - V2EX Mongodb 怎样对 key 进行模糊查询? - V2EX 请教 mongo 连接问题 - V2EX Mongodb 字符串转 ObjectId - V2EX 问个增量更新的办法。 - V2EX 求助, MongoDB 中查找如何做到完全匹配 - V2EX MongoDB 事务 + Promise.all(),会有部分数据操作失败。这是为啥? - V2EX mongodb 中的递归查找子目录 - V2EX 求助 启动服务后执行程序就自动退出 - V2EX 列了 MongoDB 的 Golang 使用,注入攻击防范需要注意的点,请大家看看还有其他需要注意的没? - V2EX 求助帖 - V2EX mongodb 查询问题 - V2EX mongodb 连接加上 auth 认证后,数据库切换会花掉 0.5 秒 ,多个数据库间切换时会很慢。
请教大家一个 mongodb 大数据量下, count 优化的问题 - V2EX
Belmode · 2024-03-13 · via MongoDB

这是一个创建于 824 天前的主题,其中的信息可能已经有所发展或是发生改变。

问题背景:
现在有个一个集合,每月大概会往里插入将近 600M 的数据,项目项目上线了将近 4 个月,有 2500W 数据,现在 count 一次,需要将近 1~2 分钟,即使使用了各类索引优化,还是没什么太大作用。

我想请教一下大家,遇到这中情况,该如何优化呢,或者说,有什么更合适的方案去在这种数据量下进行 count 查询呢?

谢谢!

第 1 条附言  ·  2024 年 3 月 13 日

大概的查询语句

集合schema

{
    //...省略其他字段
    "_id": ObjectId("65e9310b6c21fc6df939c43d"),
    "nodeType": "start",
    "executeTime": ISODate("2024-03-07T03:14:19.708Z"),
    "isDetail": false,
}

索引

{
    "executeTime": -1,
    "nodeType": 1,
    "isDetail": 1,
}

查询语句

db.collection.countDocuments({
    "executeTime": {
        $gte: new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000),
        $lte: new Date()
    },
    "nodeType": "interactive",
    "isDetail": true,
}, {
  "executeTime": 1
  "nodeType": 1,
  "isDetail": 1,
  "_id": 1,
})
Yuan2One

1

Yuan2One      2024 年 3 月 13 日 via Android

只查总数吗,存 redis 可以吗

coderxy

3

coderxy      2024 年 3 月 13 日

这个要看你索引的定义, 一般 count 条件语句的第一个字段非常重要,要用比较稀疏的字段, 还是要具体分析的。 你可以把你的字段和查询条件贴出来,具体分析一下看看。

defunct9

4

defunct9      2024 年 3 月 13 日   ❤️ 1

开 ssh ,让我上去看看

Belmode

7

Belmode      2024 年 3 月 13 日

@coderxy #3 集合结构和查询语句

集合 schema
{
//...省略其他字段
"_id": ObjectId("65e9310b6c21fc6df939c43d"),
"nodeType": "start",
"executeTime": ISODate("2024-03-07T03:14:19.708Z"),
"isDetail": false,
}
索引
{
"executeTime": -1,
"nodeType": 1,
"isDetail": 1,
}

查询语句
db.collection.countDocuments({
"executeTime": {
$gte: new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000),
$lte: new Date()
},
"nodeType": "interactive",
"isDetail": true,
}, {
"executeTime": 1
"nodeType": 1,
"isDetail": 1,
"_id": 1,
})

coderxy

8

coderxy      2024 年 3 月 13 日

@Belmode nodeType 存在的值多不多? 多的话拿 nodeType 做联合索引第一位,isDetail=true 的情况多不多,多的话拿 isDetail 做第一位,反正索引要么是 nodeType_isDetail_executeTime 要么是 isDetail_nodeType_executeTime ,你再去试试,性能应该回好不少。 你现在的索引用法,估计 explain 分析一下,seek 特别多。 最终的效果可能相当于只有 executeTime 单索引的效果。

rrfeng

9

rrfeng      2024 年 3 月 13 日 via Android

这索引没啥可以优化的,只能走预计算了。
比如把每天的 count 算出来单独存一下,这个查询优化成 sum 29 天 统计数据+本日数据。

mingsz

10

mingsz      2024 年 3 月 13 日

executeTime 需要查询的那么精确吗,可以新增个字段,如果到天/小时,索引会小很多

ychost

11

ychost      2024 年 3 月 13 日

这个感觉没太大优化点了,每天提前把所有条件都查一遍吧,然后前端值允许查看预制的筛选条件