7.Dataview插件的基础语法
本篇文章主要系统介绍一下Dataview插件的基础语法。
Dataview 完整查询语法
<QUERY-TYPE:table/list/task/calendar> <WITHOUT ID> <字段>
FROM <来源>
<WHERE> <条件表达式>
<SORT> <排序依据 排序方式>
<GROUP BY> <分组依据>
<LIMIT> <限定显示记录数>
<FLATTEN> <拆分表达式>
Dataview字段
文件自带的属性
文件属性 | 字段类型 | 属性说明 |
---|---|---|
file.name | Text | 文件名 |
file.folder | Text | 所在文件夹 |
file.path | Text | 完整路径 + 完整文件名 |
file.ext | Text | 扩展名 |
file.link | Link | 链接至本文件 |
file.size | Number | 文件大小 (bytes) |
file.ctime | Date Time | 创建时间 |
file.cday | Date | 创建日期 |
file.mtime | Date Time | 最后修改时间 |
file.mday | Date | 最后修改日期 |
file.tags | List | 文中的标签和 YAML 中的 tags |
file.etags | List | 文中的标签和 YAML 中的 tags |
file.inlinks | List | 反向链接 |
file.outlinks | List | 正向链接 |
file.tasks | List | 文中的任务列表 |
file.lists | List | 文中的列表 (包含任务列表) |
file.frontmatter | List | 文件中的 YAML 块内容 |
file.starred | Boolean | 加星 |
YAML 定义属性
yaml属性直接使用,无需前缀;参考以下示例。
```dataview
//示例
table info,author,file.frontmatter.author
from "index"
where contains(file.name,"index")
```
属性的字段类型
字段类型 | 表达方式 | 举例 |
---|---|---|
Text | 用 “” 括起来的字符 | “这就是 Text 类型” |
Number | 由符号 + - 数字 0 ~ 9 和小数点 . 组成 | -1.98 |
Boolean | 只有 true 和 false 两个值,表示是与否 | true |
Date | 由日期和时间组成,遵循 ISO 8601 标准格式为 YYYY-MM[-DDTHH:mm:ss.nnn+ZZ] | 2024-08-18 |
Link | 使用双链的链接 | [[ a ]] |
List | 有序/无序/任务列表 | - 无序列表 |
Dataview来源
来源
Tags 标签
```dataview
LIST FROM #DataView
```
Folders 文件夹
```dataview
TABLE file.link as "文件名称", aliases as "别名", dateformat(file.cday,"yyyy-MM-dd") as "创建日期", choice(file.starred, "是", "否") as "加星"
FROM "Study"
```
Specific Files 指定文件
```dataview
TABLE file.link as "文件名", file.tasks.text as "任务名", choice(file.tasks.completed, "是", "否") as "已完成"
FROM "Study/Java"
```
Links 链接
```dataview
LIST
FROM [[内部文件链接]]
```
//查询 [[内部文件链接]] 被哪些文件链接,即入链
```dataview
LIST FROM outgoing([[MySQL]])
```
Combing Sources 多重来源
#即以上来源联合起来使用
```dataview
TABLE aliases as "别名"
FROM "1.Projects" and outgoing([[MySQL]])
SORT file.cday DESC
```
Dataview-where 过滤条件
Text 类条件
包含指定文本
#icontains 大小写不敏感
#contains 大小写敏感
```dataview TABLE file.link as "文件名称" FROM "Study" WHERE icontains(file.name,"obsidian") ```
不包含指定文本
```dataview TABLE file.link as "文件名称" FROM "Study" WHERE !icontains(file.name,"obsidian") ```
以特定文本开头/结尾
```dataview TABLE file.link as "文件名称" FROM "Study" WHERE startswith(file.name,"Obsidian") or endswith(file.name,"dian") ```
英文大小写转换
```dataview TABLE file.link as "文件名称" FROM "Study" WHERE startswith(upper(file.name),"OBSIDIAN") or endswith(lower(file.name),"dian") ```
Number 类条件
#大于等于 >=
#不等于!=
…… WHERE number >= 8
Date 类条件
日期的格式化
```dataview TABLE dateformat(file.cday,"yyyy-MM-dd") as "创建日期", dateformat(file.ctime,"HH:mm: ss") as "创建时间", FROM "Study" ```
大于等于指定日期
```dataview TABLE dateformat(file.cday,"yyyy-MM-dd") as "创建日期" FROM "Study" WHERE file.cday >= date("2023-02-19") ```
常用的日期属性
// year // month // day // date (today) // date (now) // date (tomorrow) // date (yesterday) // date (sow) // date (eow)
#本月创建的
```dataview TABLE dateformat(file.cday,"yyyy-MM-dd") as "创建日期" FROM "Study" WHERE file.cday.month = date(today).month ```
```dataview TABLE dateformat(file.cday,"yyyy-MM-dd") as "创建日期" FROM "Study" WHERE file.cday >= date(sow) and file.cday <= date(eow) ```
Boolean 类条件
```dataview TABLE file.link as "文件名称", choice(file.starred, "是", "否") as "加星" FROM "study" ```
Link 类条件
```
…… WHERE contains(file.outlinks, [[内部文件链接]]) ```