← Obsidian 使用指引 · 使用指引
Dataview 查询入门

摘要:知识库首页的”最近更新”、各领域概览页的”案例摘要”列表、成员档案里的”我负责的项目”,都不是手动维护的,而是用 Dataview 插件根据 YAML 属性自动生成的。了解基本写法,就能自己新建或修改这类自动列表。

为什么知识库大量用 Dataview

知识库里项目、案例、框架数量会一直增长,如果每次新增一篇笔记都要去首页、概览页手动加一行链接,很容易漏掉或忘记更新。Dataview 的做法是反过来:只要新笔记的 YAML 属性和存放路径符合规范,它就会自动出现在该出现的列表里,不需要手动维护索引。

最基础的写法:LIST

在任意笔记里插入一个代码块,语言标记为 dataview:

```dataview
LIST
FROM "01_领域知识/PCIC/案例摘要"
SORT file.name ASC
```

效果是:列出 案例摘要 文件夹下所有笔记的链接,按文件名排序。各领域 _概览.md 里的”案例摘要""分析框架”板块用的就是这个写法。

更常用的写法:TABLE

如果想展示文件的某些属性(比如项目的完成时间、客户),用 TABLE:

```dataview
TABLE 项目类型 AS "类型", 客户 AS "客户", 完成时间 AS "完成"
FROM "02_项目档案"
WHERE file.name != "_索引" AND 负责人 = this.name
SORT 完成时间 DESC
```

这段查询来自成员档案模板的”我负责的项目”板块:负责人 = this.name 表示只显示 frontmatter 里”负责人”字段等于当前这篇笔记 name 属性的项目。this 指的就是当前打开的这篇笔记本身。

常见的过滤条件

  • WHERE file.name != "_索引":排除文件夹里的索引页自己
  • WHERE contains(核心团队, this.name):某个字段是列表时,用 contains() 判断是否包含当前值
  • AND 更新时间:确保这个字段存在(不是空的)才显示

排查”为什么这篇笔记没有出现在列表里”

最常见的原因:

  1. 文件不在 Dataview 查询指定的 FROM 路径下
  2. YAML 属性名打错了(比如列表里写的是”负责人”,笔记里写成了”项目负责人”)
  3. 字段类型不匹配(比如查询按日期排序,但笔记里这个字段写的是纯文本)

与本知识库的关联