苦行僧

苦行僧

Dataview 手册

7
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 表示未完成

9dc9069453bf8be79355dd1895bff5a6_MD5