Dataview 的本质就是 SQL for Markdown Files。它把你的 Vault 当作一个数据库,每一个 .md 文件就是一行记录(Row),文件的属性(YAML Frontmatter)就是字段(Column)。
基本查询结构 (SELECT-FROM-WHERE)
TABLE file.mtime AS "Last Mod" -- SELECT: 选择展示哪些字段
FROM "项目" -- FROM: 指定源目录 (也就是你的 WHERE path LIKE '项目%')
WHERE file.name != "Template" -- WHERE: 过滤条件
SORT file.mtime DESC -- ORDER BY: 排序
LIMIT 5 -- LIMIT: 限制条数- TABLE: 输出为表格。
- LIST: 输出为无序列表
- WITHOUT ID: 默认情况下 Dataview 第一列会显示文件名。加上这个,你可以自定义第一列显示什么(比如把文件名改名为 “Project”)。
隐式字段 (Implicit Fields)
Dataview 会自动为每个文件生成元数据,不需要手动写,直接调用的:
- file.link: 文件的超链接。
- file.name: 文件名(不带后缀)。
- file.path: 完整路径(如 项目/CTF/Pwn_Staging.md)。
- file.ctime: 创建时间 (Created Time).
- file.mtime: 修改时间 (Modified Time)。
- file.folder: 文件所在的文件夹名。
自定义字段 (Custom Fields via YAML)
这是个性化的关键。你在笔记最开头的 --- 区域写的东西,都可以被查询。
实操演示:
假设你在 项目 文件夹里有一个笔记叫 CTF-2025-Winter.md。
请在笔记开头写入:
status: active
priority: high
tags: [ctf, pwn]然后,你可以修改 Homepage 的代码来只显示状态为 active 的项目:
TABLE status, priority
FROM "项目"
WHERE status = "active" <-- 这里就是调用了你自定义的 YAML 属性
SORT priority DESC