知识库自动汇总:用 Dataview 让笔记自己跑起来

前几篇聊了知识库怎么搭、怎么填、怎么搜。这篇说一个省力的事——让笔记自己汇总。

知识库一大了,麻烦的不是找不到东西,是维护索引。今天建了个目录,明天加了 20 篇新笔记,目录就过时了。手动更新不想干,不更新吧,新笔记丢进去跟进了黑洞一样。

Dataview 就是干这个用的。

这玩意儿是 Obsidian 的一个插件,能用类似查询的语法翻笔记。

不是真正的 SQL,语法更简单,专为 Markdown 文件设计。想知道「最近一个月改过的所有笔记」?一行就行:

TABLE file.mtime AS "修改时间"
FROM "笔记"
SORT file.mtime DESC
LIMIT 10

不用手动维护任何列表。数据是活的——改了笔记,查询结果自动更新。

Dataview概念图

装了先做什么

装完 Dataview,不用急着学语法。先做一件事:确保每篇笔记开头都有规范的 frontmatter。

就是那几行 --- 之间的内容:

---
title: "笔记标题"
created: 2026-06-01
tags:
  - "领域/运维"
status: stable
---

Dataview 查的就是这些字段。没有 frontmatter 的笔记,在查询里根本查不到。所以第一步是养成写 frontmatter 的习惯——哪怕只写 titlecreated 两个字段也够用。

Frontmatter 规范图

三个实用场景

我的 vault 里跑了十几个 Dataview 查询,最常用的就这三个。

场景一:自动目录

不用手动维护索引文件了。建一个笔记,写一行查询,目录自动生成。

TABLE file.link AS "文件", file.mtime AS "最后修改"
FROM "资料库"
SORT file.mtime DESC

每次打开这个页面,看到的是最新的东西。新笔记写进去自动出现,删了的自动消失。

场景二:按状态看进度

笔记有 status 字段(draft/review/stable/archived)的话,这么查:

LIST FROM "笔记"
WHERE status = "draft"
SORT file.cday DESC

所有未完成的草稿一目了然。不用记哪些写了没改完——查询本身就是待办清单。

场景三:按标签汇总

把所有打了领域/运维的笔记汇总到一张看板上:

TABLE file.mtime AS "更新时间", status AS "状态"
WHERE contains(tags, "领域/运维")
SORT file.mtime DESC

三个实用场景图

进阶玩法:FLATTEN + 标签聚合

一篇笔记有多个标签,想按单个标签展开统计,就用 FLATTEN:

TABLE rows.file.link AS "相关笔记"
FLATTEN tags AS tag
WHERE contains(tag, "领域/")
SORT tag ASC
GROUP BY tag

效果是按领域分组,每组下面列出对应笔记。等于自动生成了一个「领域→笔记」映射表。

FLATTEN进阶查询图

几个小坑

Dataview 整体很稳定,但有几个地方容易摔。

查询多了影响性能。vault 超过5000篇笔记后,每次打开跑5到6个查询会有明显延迟。解决方案是加LIMIT,或者只在需要时才打开查询页面。

不要在表格里用带 | 的 wikilink。[[笔记|显示文本]] 里面的竖线会被表格解析器吃掉,链接就断了。表格里只用 [[笔记]]

查询结果不能编辑。Dataview 是只读的——想改数据要回到源文件改 frontmatter。

中文排序有时不准。中文姓氏按拼音排可能不是想要的结果。用 SORT 之前先确认排序逻辑。


Dataview 的核心价值不是学一门新语言,是不需要再手动维护那些一定会过时的列表和目录。

前几篇讲了采集、分类、搜索、AI辅助。这些是「往库里放东西」和「从库里找东西」。Dataview 解决的是中间那件事——「让库里已有的东西自己组织起来」。三个事都做全了,知识库才算真正跑起来。

系列到这篇,基本把知识库从搭到用的每个环节都聊了一遍。还有什么想聊的话题,欢迎留言。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部