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

推荐订阅源

小众软件
小众软件
Y
Y Combinator Blog
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
T
Tor Project blog
I
Intezer
T
Threat Research - Cisco Blogs
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Last Watchdog
The Last Watchdog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
P
Privacy & Cybersecurity Law Blog
N
News | PayPal Newsroom
N
News and Events Feed by Topic
C
CERT Recently Published Vulnerability Notes
T
Tenable Blog
K
Kaspersky official blog
V
Visual Studio Blog
T
Troy Hunt's Blog
Project Zero
Project Zero
博客园_首页
The Register - Security
The Register - Security
O
OpenAI News
G
Google Developers Blog
Simon Willison's Weblog
Simon Willison's Weblog
J
Java Code Geeks
D
DataBreaches.Net
F
Full Disclosure
Latest news
Latest news
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Security Affairs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
腾讯CDC
有赞技术团队
有赞技术团队
Hacker News - Newest:
Hacker News - Newest: "LLM"
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs
Vercel News
Vercel News
V
Vulnerabilities – Threatpost
月光博客
月光博客
Hacker News: Ask HN
Hacker News: Ask HN
B
Blog RSS Feed
P
Palo Alto Networks Blog
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
G
GRAHAM CLULEY

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 大数据量下, count 优化的问题 - 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 求助 启动服务后执行程序就自动退出 - V2EX 列了 MongoDB 的 Golang 使用,注入攻击防范需要注意的点,请大家看看还有其他需要注意的没? - V2EX 求助帖 - V2EX mongodb 查询问题 - V2EX mongodb 连接加上 auth 认证后,数据库切换会花掉 0.5 秒 ,多个数据库间切换时会很慢。
mongodb 中的递归查找子目录 - V2EX
among · 2021-12-01 · via MongoDB

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

# 目录表
class TC_struct(Document):
    name = StringField()    #目录名
    parent = ObjectIdField()    #上层目录的 id


# 文件表
class TC_item(Document):
    # 所在目录
    parent = ReferenceField(TC_struct) #所在的目录

根据目录,递归查找目录中的所有文件。

#先找到所有的目录。path_id 为所选择目录的 id path_ls = recurs_path(TC_struct, path_id)

#然后找到目录下的所有文件 qry_list = Q(parent__in=path_ls)

#递归查找目录的方法。

def recurs_path(tb_cls, path_id):
    rds = tb_cls.objects(parent=ObjectId(path_id)).only('id')
    rt = list()
    rt.append(ObjectId(path_id))
    for rd in rds:
        # 递归查找子目录中的子目录
        rt.extend(recurs_path(tb_cls, rd._id))
    return rt

现在的问题是,如果目录结构很深,如有 4000 多个目录,在递归的时候,耗时特别长。

有没有方法,可以提升递归时的效率。 根本的需求是:递归查找目录中的所有文件。

among

1

among      2021 年 12 月 1 日

4000 多个字目录,响应时间能有 4s 多。

ipwx

2

ipwx      2021 年 12 月 1 日

就算是操作系统上面递归子目录也这么慢啊。。。

你要检索的时候秒出结果,你就需要加索引:

1. 要么把所有目录的前缀抽出来当 tag 扔进倒排索引。
2. 要么找个支持前缀匹配的数据库。

说实话你可以自己写一个程序挂在那里跑,专门维护内存索引,绝对不慢

among

3

among      2021 年 12 月 1 日

mongodb 中的 aggregate 能否支持这种。

libook

4

libook      2021 年 12 月 1 日

你可以先查叶子目录名,看有几个符合要求的,然后再想根递归查询,中间不符合要求的过滤掉,越靠近根目录,候选就越少,最终剩下一个到根目录的候选就是你要的结果,或者到根之前 0 候选就表明目录不存在。然后拿着叶子目录的 ID 去文件表里查,可以一次性查到。

不知道你的场景这样是不是会有效。

among

6

among      2021 年 12 月 1 日

@libook

现在的算法就是根据跟的 id ,查找他目录下面的字目录,然后在递归查找这个子目录中子目录,一层层递归。
最后得到所有的目录的 id 的 list , 最后根据这个 list ,找到目录在这些 list 中的文件。

请过时间分析,时间都花在递归目录上了,查找文件很快。

libook

9

libook      2021 年 12 月 1 日

@among #6 要不然就是空间换时间,你把所有目录的完整路径存到一个

libook

10

libook      2021 年 12 月 1 日

@among #6 要不然就是空间换时间,你把所有目录的完整路径存到一个单独的表里,用字符串一次性匹配。