Dataview:让 Obsidian 笔记长出“数据库的脑子”。。。
有人问我:“Obsidian 有啥插件能让我真正看清笔记的价值?”我当时拍着胸口说——Dataview。 它不是插件,它是“笔记的放大镜”、“数据的炼金炉”。有了它,你能把散落在 Obsidian 角落的碎片,炼成清晰的知识图谱。别人写笔记是“堆文字”,你用 Dataview,就是“编程式思考”。
说白了,Dataview 就像让笔记长了眼睛。以前我写笔记全靠手翻,今天想找某个项目的进度,还得一篇篇点开查。现在?敲几行代码,Obsidian 自动帮我把所有相关笔记排成表格、统计数量、汇总结果。你甚至可以写出一句“给我看过去 7 天写过的笔记”,然后 Obsidian 就真给你列出一张“时光报告表”。那一刻,我对 Obsidian 的爱从“工具”升级到了“信仰”。
我第一次见到 Dataview,是在 Reddit 上刷到个截图。一个哥们的笔记界面里,居然有表格、图表、任务清单,还能自动刷新。我心想这不科学啊——这不是 Notion 干的事吗?点进去一看,作者写着一句:“All powered by Dataview.” 我当场决定装一个试试。 然后命运的齿轮开始转动——我的笔记系统,从此走上“智能化”的不归路。
让我们先从原理讲起。Dataview 本质上是一个查询引擎,能扫描你整个 Vault 的 Markdown 文件,把它们当成一个小数据库。 它读文件里的 YAML 前置字段(那三条横线包住的部分)和正文内容,然后让你用类似 SQL 的语法写查询,比如:
TABLE status, project
FROM "Tasks"
WHERE status = "进行中"
这几行代码,能立刻生成一个表格,把所有“进行中”的任务列出来。没错,笔记文件变数据库,文本世界也能跑查询。 有时候我调侃它叫“鬼哥的笔记 SQL 引擎”。
Dataview 的语法其实不难,它支持三种主要视图:TABLE 表格视图:最常用,把笔记属性列成表格;LIST 列表视图:简洁展示结果;TASK 任务视图:筛选带 [ ] 任务标记的内容。
举个最常见的例子,我有一个文件夹 /Journal/ 专门放每日笔记,每篇都有 YAML 头:
date:2025-10-29
mood:开心
summary:学了Dataview
然后我写了这样一段查询:
TABLE date, mood, summary
FROM "Journal"
SORT date DESC
LIMIT 7
瞬间,我的 Obsidian 右侧出现了一张“最近七天生活日志表”,每天的心情和概要一览无余。 我看着那几天的“心情”列,发现“焦虑”连着出现三次,于是果断决定——那周周末不加班。Dataview 不是单纯帮你看数据,它帮你看见自己。
你可能会问:那 Dataview 到底要怎么装?
很简单。鬼哥手把手教你:打开 Obsidian → 设置 → 社区插件 → 关闭安全模式;点击“浏览”,搜索 Dataview;安装并启用。
启用之后,任意笔记里新建一个代码块:
TABLE file.mtime as "更新时间"
FROM ""
SORT file.mtime DESC
保存后,它就自动渲染成一张表,列出你所有文件和最后更新时间。第一次用 Dataview 的人,看到这效果基本都是一个表情——嘴角微微上扬,心想:“我靠,这也太酷了吧。”
那我们来聊点高级玩法。Dataview 真正强大,不是因为它能显示表格,而是因为它能让你的笔记系统变成数据驱动的知识仓库。
比如我有个文件夹 /Projects/,每个项目笔记都有这样的头:
status:进行中
deadline:2025-11-10
priority:高
我写了个查询:
TABLE status, deadline, priority
FROM "Projects"
WHERE status = "进行中"
SORT deadline ASC
打开笔记那一刻,我能立刻看到所有正在推进的项目,截止日期谁先谁后,一目了然。 以前我得翻文件夹、开任务列表、瞎记脑子里。现在?Dataview 一页解决。 我甚至写了个“项目仪表盘”,每天早上打开 Obsidian,第一眼就是今天要干的事。比 Jira 香太多。
接下来讲讲我最爱的组合技——Dataview + Tasks + Calendar。
Tasks 插件负责记录任务,比如:
- [ ] 写Dataview教程 🔁 每周一 📅 2025-10-30
Dataview 负责查询这些任务。 我写了这样一个查询块:
TASK
FROM "Tasks"
WHERE !completed
GROUP BY due.date
效果?所有未完成的任务,按日期分组排列。 再配合 Calendar 插件,你能直观看到哪天该干啥。 我形容这个组合是“笔记里的 GTD 系统”。别人要用三个 App 才能做到的事,我在 Obsidian 里搞定。
还有一个更骚的玩法——DataviewJS 模式。 DataviewJS 就是 Dataview 的“开挂版”,允许你直接写 JavaScript 操作笔记数据。 比如我写了段脚本,统计过去一周写的笔记数:
let pages = dv.pages('"Journal"').where(p => p.date >= moment().subtract(7, 'days'));
dv.paragraph(`过去七天写了 ${pages.length} 篇笔记 💪`);
保存后一刷新,Obsidian 居然显示:“过去七天写了 5 篇笔记 💪”。 这不是静态展示,而是真·动态计算。 那一刻我笑出声:Dataview 让我感觉自己在写代码养笔记,笔记也在反过来养我。
当然,我也踩过坑。鬼哥友情提示几条: YAML 格式要标准。 Dataview 是强迫症,少一个冒号都解析不了。 路径区分大小写。 Windows 用户容易忽略这一点。 查询块和 DataviewJS 不能混写。 要么写 dataview,要么写 dataviewjs,别贪心。 性能问题。 Vault 太大时,Dataview 会稍微卡顿。建议定期整理文件夹。 别把它当数据库用。 Dataview 是查询引擎,不是写入引擎。别想着在表里直接改值——那是梦。
我还有个小秘密用法: 我给每篇文章都加了 tag,比如:
tags:[教程,Obsidian,插件]
然后写个查询:
TABLE file.link AS "标题"
FROM ""
WHERE contains(tags, "Obsidian")
就能立刻生成一份“所有 Obsidian 相关文章目录”。 我再配合 Templater,把这查询嵌入首页模板里,每次打开首页都能自动刷新列表。 别人花一小时整理索引,我两秒生成。 这种“自动生长的知识结构”,就是我理解的笔记智能化。
Dataview 真正改变我的地方,不只是效率,而是笔记观念的转变。 以前我写笔记像在丢瓶子——扔进海里,也不管漂去哪。 现在,我写笔记像在建数据库——每一篇都有属性、有关系、有逻辑。 我不再担心笔记多,而是享受数据成体系的感觉。 每天看着 Dataview 表格一点点延展,像看自己思考的地图在长大。
我认识几个朋友,用 Dataview 建了“读书记录表”“健身打卡表”“理财日志”“代码片段索引”。有个人甚至写了个“猫咪喂食记录系统”——每天喂猫的时间、食量、心情都能查。 我问他:“你这是 Obsidian 还是宠物管理软件?” 他说:“Dataview 让猫都有数据驱动生活。”我差点笑出声。
安装到这一步,如果你已经开始写查询、玩模板,那你就算入门了。 但如果你愿意往深一点挖,Dataview 会变成你笔记系统的“灵魂中枢”。 我现在打开 Obsidian 的首页,三张表格自动显示:今天要做的任务;最近更新的文件;过去七天的笔记数量。
我不需要翻文件,不需要搜索。所有信息都自己跑出来迎接我。 那种感觉,真像“笔记自己在工作”,我只要思考就行。
写到这里,我又习惯性地点开 Dataview 的仪表盘。屏幕上那行字闪着:过去 30 天新增笔记:47;完成任务:33;高效天数:18;
我盯着那数字看了会,心里忽然有点踏实。 原来时间真能“被看见”。 Calendar 帮我看见日期,Dataview 帮我看见结构。 前者是时间的皮肤,后者是时间的骨骼。 两者合起来,就是一个能呼吸的笔记系统。
如果你现在还在 Obsidian 里苦苦找文件、翻任务、乱命名,那鬼哥真心劝你——立刻装上 Dataview。 它不会替你写笔记,但它会让你的笔记“懂你”。 当你第一次看到自己的知识在表格中闪光的那一刻,你会懂我这句话: 笔记不该只是存文字,而该是一种活的数据生命。
写完这篇教程,我敲了行命令:
dv.paragraph(`鬼哥本周写了 ${dv.pages('"教程"').length} 篇文章 `)
结果屏幕上弹出一句话:“鬼哥本周写了 1 篇文章 ” 我笑了笑,合上笔记,心想——Dataview,不只是插件,它是思考的显微镜。