Dataview 进阶一:基础字段
大约 3 分钟
Dataview 进阶一:基础字段
查询语句语法含义
知其然也知其所以然,所谓查询的语句是很简单的东西,只要符合规范就不会错。
完整的查询语法
无论 dataview 也好,dataviewjs 也罢,都必须遵循一个逻辑流程:
flowchart TB
A("dataview<br/>dataviewjs") --> B["1 查询"]
A -->|"渲染"| C("2 呈现")
A -->|"过滤器 Filter"| D("3 条件")
A -->|"整理"| E("4 排序")
这个是一个典型的 dataview 的查询语句,你只要复制,格式上就不会错误。
```dataview
list
from "docs/工具/Obsidian/Dataview"
sort file.ctime desc
```
list
from "docs/工具/Obsidian/Dataview"
sort file.ctime desc
我们大致了解一下这 5 行语句:
- 第 1 行:是固定格式,不用动,用三个点开始,表示代码块的语言是
dataview
- 第 5 行:也是固定格式,不用动。表示代码块的结束。我们用三个点开始,在用三个点结束
- 第 2 行:list,表示呈现的样式,有 4 种,table、list、task、CALENDAR。按需选择,大小写无所谓
- 第 3 行:from,字面意思,就是从哪里查询。比如从指定的文件夹,标签、文件等
- 第 4 行:sort,字面意思排序,按
file.ctime
这个字段,desc 排序方式。 - 其他规范:英文单词之间用一个空格间隔,每行一个语句,标点符号一定要用英文符号
我们经常改动哪里?
- from:指定查询的地方,
- 如果是文件夹,格式固定为
"文件夹"
,英文双引号里面是文件夹名字,双引号一定要有。 - 如果是标签,格式固定为
#标签名
,英文的#
号加上标签名字,英文的#
号一定要有。 - 如果同时查询两个条件,可以用
and
连接起来,表示同时具备。 - 如果从两个条件中任一匹配一个,可以用
or
连接起来,表示或者,选择其中一个。
- 如果是文件夹,格式固定为
- sort:排序
- 可替换
file.ctime
文件创建时间这里,file.mtime
文件修改时间,file.name
文件名。其他复杂的以后在研究。(了解一下,这个 file.ctime 叫做隐式字段) - 排序方式两种,
DESC
降序排列和ASC
升序排列,
- 可替换
查询结果显示样式
查询结果可以有四种样式:
- TABLE: 表格样式,传统的视图类型;每个数据点有一行,有几列的字段数据.
- LIST: 列表样式,匹配查询的页面的列表。你可以为每个页面输出一个单一的关联值.
- TASK: 任务列表,页面符合给定查询的任务列表.
- CALENDAR: 一个日历视图,通过其相关日期上的一个点来显示每一个命中率。
可供查询的字段
既然是查询,那肯定需要指定查询的条件,就是这里的字段。主要是两种:
- 自带
隐式字段
,由 dataview 自动添加给 md 文件, - 添加的自定义字段,可在页面顶部和正文自行添加。然后去调用。比如
书名:: obsidian文档
,通过查询书名
,可以得到obsidian文档
这个值
自定义 inline 内联字段
就是可以在正文中插入的字段,也可以被 dataview 所查询。但是一般情况下,应该尽量避免使用,因为太零散了不容易管理。
定义内联字段
key:: value
book:: obsidian
键:: 值
书名:: obsidian
查询书名为 obsidian 的字段
LIST
FROM "docs/工具/Obsidian/Dataview"
WHERE 书名 = obsidian