Obsidian Dataview 快速上手指南:把笔记库变成可查询的数据库
【免费下载链接】obsidian-dataviewA data index and query language over Markdown files, for https://obsidian.md/.项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-dataview
你在 Obsidian 里攒了几百条笔记,想查“今年读了哪些书、各打了多少分”的时候,只能一个个文件夹翻吗?Obsidian Dataview 插件可以把整个笔记库扫描成一张可查询的数据表:元数据自动索引,几行查询语句就能出表格、出日历。这篇文章带你从安装到进阶玩法一次走通。
🧩 它是什么
Dataview 是 Obsidian 的一款社区插件,本质是架在你笔记库之上的“数据索引 + 查询语言”。它扫描整个 Vault,把每个 Markdown 文件里的元数据(YAML frontmatter、内联字段、标签、任务)提取出来,让你像查数据库一样筛选、排序、分组自己的笔记——笔记本身不用搬进任何表格,它们还是普通的 Markdown。
它的核心能力:
- 自动索引全库元数据,frontmatter、内联字段、标签、任务清单都能查
- 四种查询方式:DQL 查询语言、内联表达式、DataviewJS、内联 JS,由浅入深
- 结果能渲染成表格、列表、任务清单和日历四种视图
- 笔记一改动,查询结果实时跟着刷新
- DQL 查询在沙箱里跑,只读不改,不会弄坏你的笔记库
- 对外暴露 JavaScript API,可以写插件直接调用它的索引
🚀 30 秒上手:Dataview 怎么装、第一条查询怎么写
安装很简单:在 Obsidian 里打开“设置 → 第三方插件”,先启用社区插件,然后搜索 “Dataview” 安装并打开。装完什么都不用配,它就开始后台索引了。
现在,假设你每篇读书笔记的 frontmatter 里都写了rating字段。新建一篇笔记,贴入下面这段查询——它的作用是列出 books 文件夹下所有笔记,显示阅读时间和评分,并按 genre 字段分组:
TABLE time-read, rating FROM "books" GROUP BY genre效果如下,每个类型自动分成一组,组内还能直接点链接跳回原文:
是不是就这几行?对,DQL 的常用句式就三种部件:FROM圈定数据来源,WHERE加过滤条件,SORT / GROUP BY控制顺序和分组。
📚 实际能帮你做什么
游戏记录排序表
如果你有记游戏清单的习惯,Dataview 能把“游玩时间、时长、评分”变成一张可排序的榜单。下面这条查询从 games 文件夹取出所有笔记,按评分从高到低排列:
TABLE time-played, length, rating FROM "games" SORT rating DESC效果如图所示,玩过的游戏、花了多少小时、打了多少分,一眼扫完:
按年份过滤读书笔记
读书笔记还能按时间、标签来切。这条查询找出所有带 #book 标签、且阅读年份是 2021 年的笔记,输出成带链接的表格:
TABLE file.link, time-read, rating FROM #book WHERE time-read.year = 2021效果如下,一年读了什么、节奏如何,翻一页笔记就能看到:
日历视图看节奏
想按时间轴看自己的节奏?CALENDAR查询会把每条结果对应日期变成日历上的一个点。下面这条把全库笔记的创建日期画成月历:
CALENDAR file.ctime效果如图所示,哪个月笔记写得密、哪段时间断更了,一目了然:
🛠️ 进阶玩法:内联字段和 DataviewJS
内联字段让你不碰顶部的 frontmatter,直接在正文里写rating:: 8这样的键值对,Dataview 就会把它当作可查询字段索引下来。任务也能挂字段,比如给- [x] 完成了加个[completion:: 2021-08-15],之后就能按完成日期查任务。完整语法(包括字段怎么自动识别为日期、数字、列表)写在 docs/docs/annotation/add-metadata.md 里。
结合查询,内联字段能拼出很实用的看板。效果如下,这是一张由内联字段驱动的日常回顾表:
DataviewJS则给会写点 JS 的你留了全功率接口:直接在笔记里写 JavaScript,调用dv.pages()拿到全库索引,随意组合标题、表格、列表输出。API 入口和查询执行流程分别在 src/api/ 和 src/query/ 两个目录里,照着读很快能上手。有一点要记牢:JS 查询拥有和插件同级的权限,能改写甚至删除文件,所以只运行你看得懂的代码。
✅ 高效使用清单
- 统一字段名:评分就到处写
rating,别和score混用,混用是查询“丢数据”的头号原因。 - 日期一律写成
YYYY-MM-DD标准格式,这样 Dataview 才会识别成日期类型,年份比较和日历视图才可用。 - 用文件夹和标签圈出数据域,
FROM "books"或FROM #game各管一摊,查询又快又准。 - 建一页固定的“Dashboard”笔记,把最常用的查询放在里面,表格里的链接可以直接跳回原文。
- 复杂排版先用 DQL 的
GROUP BY试,不够用再切 DataviewJS,别一上来就写 JS。
📍 下一步
仓库的 docs/ 目录里有完整的查询语法、函数参考和元数据说明,是官方文档的源码所在;CHANGELOG.md 则记录着每个版本新增了什么。建议装好插件后,照着 docs 里的查询示例逐条试一遍,半天时间基本就能玩转它了。
【免费下载链接】obsidian-dataviewA data index and query language over Markdown files, for https://obsidian.md/.项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-dataview
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考