Dataview 手册
编辑
26
2024-10-21
tags:
- dataview
- Obsidian
rating: "10"
title: Dataview手册
date: 2024-10-14T11:25:00
Dataview定义:
查询对象: Obsidian 数据库
Dataview查询依据:
1. YAML 数据 / Metainfo 元数据容器
添加元数据:
YAML 数据:在文章开头 ctrl +; 添加
- obsidian 自带的支持yaml 的字段: tags 、publish、 cssclass 、aliases
Yaml 语法规则:
- 大小写敏感,可以使用中文;
- 冒号后要跟一个空格;
- 使用缩进来代表层级关系;
- 缩进时只能用空格,不能用 Tab;
- 缩进的空格数不重要,但是同一级元素必须左对齐;
- 用井号标识注释,从 # 到当前行的末尾是注释;
2. Meatainfo: 元数据,系统自带
元数据容器
Obsidian 文档属性
file.name: 文件标题(字符串)
file.folder: 文件所属文件夹路径
file.path: 文件路径
file.size: (in bytes) 文件大小
file.ctime: 文件的创建时间(包含日期和时间)
file.mtime: 文件的修改时间
file.cday: 文件创建的日期
file.mday: 文件修改的日期
file.tags: 笔记中所有标签数组
file.etags: 除去子标签的数组
file.inlinks: 指向此文件的所有传入链接的数组
file.outlinks: 此文件所有出站的链接数组
file.aliases: 文件别名数组
file.day:如果文件名中有日期,那么会以这个字段显示。比如文
件名中包含 yyyy-mm-dd(年-月-日,例如2021-03-21),那么
就会存在这个 metadata。
Dataview YAML 语法:
TABLE|LIST|TASK(展现形式) <field> [AS "显示列名"],..., <field> (显示字段)
FROM <source> (like #tag or "folder") (查询地址)
WHERE <expression> (like 'field = value')、contains(tags,"ob/ob插件") (查询条件)
SORT <expression> [ASC/DESC] (like 'field ASC') (排序)
...other data commands (其他命令,如limit,group by等)
语法解释:
1.四种视图: list 、table 、task、calendar
2.from 几种用法 : "" 从所有的文件、#tag 从标签列表中、“ 0-日记/xxx” 从指定目录中
3.where 聚合条件。 contains(file.name,"dataview") 意思是匹配文件名为dataview 的文件
4.分组:group by
5.limit 5 结果限制为5个值
6.排序 sort file.name desc
Dataview 查询示例
查询一:查询带指定标签名的所有文件列表,以表格的方式显示
table
from #Obsidian
table
from #Obsidian
技巧:
1. from #Obsidian 从指定标签数据中查询
查询二:list 查询日记文件夹下的所有目录文件
list without id "日记名称:"+file.name + file.size
from "0-日记"
list without id "日记名称:"+file.name + file.size
from "0-日记"
技巧:
1. without id : 不显示链接
2. +file.name 加上文件名
3. + file.size 加上文件大小
查询三:table 表格复杂查询
查询标签为 Obsidian 或者评分大于等于9分,以创建日期倒序排列的表格,表格显示文件大小,创建时间,修改日期,评分。```
table file.size as 文件大小,file.cday as 文件创建时间,file.mday as 文件修改日期,rating as 评分,tags
from ""
where rating = "10" or title = "Markdown 语法"
sort file.cday desc
flatten tags
table file.size as 文件大小,file.cday as 文件创建时间,file.mday as 文件修改日期,rating as 评分,tags
from ""
where rating = "10" or title = "Markdown 语法"
sort file.cday desc
flatten tags
技巧:as 别名 , and 并且, or 或者
flatten tags :如果一个文件有两个tags ,则会拆分为两行,一行一个tags 的形式来展示,例如这里的 dataview 手册
查询四:task 查询未完成任务
list
from ""
where contains(author ,"Guoke")
list
from ""
where contains(author ,"Guoke")
| 技巧:contains(author ,"Guoke"),查询作者为Guoke的文件列表
查询五:task 查询未完成任务
task
from "0-日记"
where !completed
task
from "0-日记"
where !completed
技巧:completed 完成, !completed 表示未完成
- 0
- 0
-
分享