Dataview进阶(2)查询命令 |
您所在的位置:网站首页 › 搜索固定日期的文件夹 › Dataview进阶(2)查询命令 |
更新记录 2023-09-19 梳理结构,增加 dataview 常用命令大纲2023-09-19 增加命令,GROUP BY分组,FLATTEN扁平化,limit 限制显示数量,无论 dataview 也好,dataviewjs 也罢,都必须遵循一个逻辑流程: # 1 dataview常用命令# 2 From 来源从哪里查提示 首先:指定查询来源,从哪个文件夹,从哪些标签 标签:从一个或多个标签范围内查询,语法是 #标签名,井号不能省略。文件夹:从文件夹(及其所有子文件夹)中选择,语法是"文件夹名",双引号不能省略。单个文件:查询指定的单个文件,语法是:文件路径/文件名字.md链接:可以查询链接,指向文件的链接,也可以选择来自文件的所有链接 要获取链接到 [[笔记名]] 的所有页面,请使用 FROM [[笔记名]]要获取从 [[笔记名]] 链接的所有页面(即该文件中的所有链接),请使用 FROM outgoing([[笔记名]])# 2.1 在from里过滤filters注意 很多时候,我们需要进行一定的筛选过滤, 比如同时要查文件夹下的某个标签,或者不想要某个标签。或者不想要某个文件。筛选条件 我们可以使用几个条件进行筛选,非常容易理解。 注意英文符号,前后有一个空格 and :和,同时满足or :或者,任选其一-: 减去,排除掉这个条件# 查询 文件夹名1 下同时有 #标签名 的数据 from "文件夹名1" and #标签名 # 查询 文件夹名1 和 文件夹名2 ,同时查两个文件夹 from "文件夹名1" and "文件夹2" # 查询 #标签名1 或者 #标签名1 ,任选其中一个 from #标签名1 or #标签名2 # 查询 文件:文件名1 或者 文件:文件名2 中的内容,任选其一 from [[文件名1]] or [[文件名2]] # 查询 文件夹:文件夹名1,并且排除其中带有标签 #标签名1 的文件 from "文件夹名1" - #标签名1 # 查询 文件夹:文件夹名1,并且排除其中的文件:文件名1 from "文件夹名1" - [[文件名1]] # 查询 文件夹,并排除另一个文件夹 2024-04-29新增 FROM "tasks" AND -"tasks/Archived" FROM "tasks" AND !"tasks/Archived" # 3 View数据呈现的样式查询结果可以有四种样式: TABLE: 表格样式,传统的视图类型;每个数据点有一行,有几列的字段数据.LIST: 列表样式,匹配查询的页面的列表。你可以为每个页面输出一个单一的关联值.TASK: 任务列表,页面符合给定查询的任务列表.CALENDAR: 一个日历视图,通过其相关日期上的一个点来显示每一个命中率。# 4 Where 过滤器-查函数作为参考SQL的DQL查询,也会使用SQL查询的概念。where 就是一个典型的条件语句。他的作用就是过滤掉符合你要求条件的内容。 提示 所以你理解为一个过滤器,你指定条件,他帮你过滤内容where 后面跟上条件,这里可以使用dataview提供的大量内置函数来实现效果。注意 下面放一些常用的函数,其实常用的就这么写,稍微举几个例子,大家也就清楚了。其他的函数,参考执行就可以。复制这里贴出的代码,严格注意格式,符号都是英文# 4.1 contains() 包含函数对于对象,检查该对象是否有具有给定名称的键对于列表,检查是否有任何数组元素等于给定值对于字符串,检查给定值是否为子字符串contains(file.name, "咖啡豆") = true # 检查对象 file.name ,包含“咖啡豆”,就返回结果为 真 # 4.2 实战1:where带contains()函数查询where contains(file.name, "咖啡豆") = true # 检查对象 file.name ,包含“咖啡豆”,就返回结果为 真 # 1. file.name 是dataview的隐式字段,前面讲到过,还有很多可以拿来查询 # 2. "咖啡豆" 是查询的文字,必须用英文的双引""号包裹 table file.mtime as "修改时间" from "" where contains(file.name, "咖啡豆") = true sort file.name desc # 用表格显示结果,表头是文件修改时间。 # 从所有的文件里查询 # 过滤条件是:文件名中包含咖啡豆的结果 # 按照文件名排序 # 1. file.name 是dataview的隐式字段,前面讲到过,还有很多可以拿来查询 # 2. "咖啡豆" 是查询的文字,必须用英文的双引""号包裹 list from "" where contains(file.name, "咖啡豆") = true sort file.name desc # 用列表显示结果 # 从所有的文件里查询 # 过滤条件是:文件名中包含咖啡豆的结果 # 按照文件名排序 # 1. file.name 是dataview的隐式字段,前面讲到过,还有很多可以拿来查询 # 2. "咖啡豆" 是查询的文字,必须用英文的双引""号包裹file.name、file.tags、file.path、file.folder 等等众多的隐式字段都可以使用。但是注意有些字段是时间格式,不能错误。 参考文档:隐式字段 # 4.3 date(any) 日期函数从提供的字符串、日期或链接对象中分析日期(如果可能),否则返回nul date("2020-04-18") # 日期对象代表 2020年4月18日 date([[2021-04-16]]) # 给定页面的日期对象,参考file.day # 4.4 dur(any) 从字符串解析时间从提供的字符串或持续时间分析持续时间,失败时返回null dur(8 minutes) # 8分钟 dur("8 minutes, 4 seconds") # 8分4秒 dur(dur(8 minutes)) # dur(8 minutes) = # 4.5 实战2:where带2个函数查询list from "" WHERE file.mtime >= date(today) - dur(7 day) sort file.mtime desc table without id file.link as 文件名, file.folder as "文件夹", file.mtime as 修改时间 from "" and -#obsidian WHERE file.mtime >= date(today) - dur(7 day) sort file.mtime desc limit 20 # 5 Where 过滤器-查自定义字段我们也可以查询自定义字段,也就是前文所讲的 frontmatter 和 inline 内联字段 参考资料:自定义 Frontmatter前言 # 6 Sort 排序按一个或多个字段对所有结果进行排序。 SORT date [ASCENDING/DESCENDING/ASC/DESC] sort file.mtime desc排序的方式 ASC:升序DESC:降序加群交流 如果在使用和学习中有不明白的地方,或者想看看别人的经验 可以查看进阶用法可以加群和大家聊聊,加微信 coffeebean1688 蹦跶的咖啡豆,然后进群可以查看咖啡豆豆龙_哔哩哔哩open in new window) 视频教程。😜关注、👍点赞、📀投币一键三连关注公众号(文章很多):`蹦跶的咖啡豆示例库(筹备中)网站启用新域名:https://obsidian.vipopen in new window 给VIP的你,很好记# 7 FLATTEN数据扁平化扁平化是很拗口的一个说法,其实就是将一组数据变成多行数据,每个数据一行,展开方便阅读而已。 概念 打个比方:一个Excel的数据,有多列,现在按照某一列的数据,展示出来,展示的结果是一个数据占一行 举例 展平每个书籍注释中的 作者 字段,为每个作者放一行 什么时候使用? ```dataview TABLE 作者 FROM #书籍 FLATTEN 作者 ``` | 书名 | 作者 | 出版日期 | 出版社 | 价格 | |-----------------------|--------------|--------------|------------|-----------| | 阳光下的快乐笔记 | 欢快小编 | 2023-03-15 | 欢乐出版社 | $20.00 | | 欢笑的故事集 | 笑声大师 | 2022-11-10 | 快乐出版社 | $18.50 | | 快乐的文字游戏 | 文字欢喜人 | 2023-05-20 | 欢乐文化 | $22.99 | | 欢快心情的诗歌 | 欢歌诗人 | 2022-09-08 | 欢歌出版 | $15.75 | | 欢跳的小说世界 | 欢乐作家 | 2023-01-30 | 欢跳出版 | $24.99 |查询结果示例: 文件名称作者阳光下的快乐笔记欢快小编欢笑的故事集笑声大师快乐的文字游戏文字欢喜人欢快心情的诗歌欢歌诗人欢跳的小说世界欢乐作家# 8 GROUP BY 数据分组这是一个很有意思的命令,当你查询出来的数据想按照一定的要求分组显示。就可以使用。 比如在 list 视图下面, 将结果按照不同的日期分组显示将结果按照不同的文件夹展示将结果按照不同的文件路径展示其他的参数 file.name 文件名称file.cday 文件创建日期file.mday 文件修改日期list rows.file.link from "Longform" where file.name != "Index" GROUP BY file.folder 按照 list 展示,并加上参数 row.file.link 文件链接 从 Longform 文件夹查询 where 限制条件:不允许文件名中包含 Index 的文件 分组展示,按照 file.folder 文件夹注意:这里有个小技巧 list 视图,我们追加了显示,在原有显示的基础上增加了 row.file.link,这一句会增加一个文件的链接。因为我们使用了 GROUP BY 分组之后,会失去文本的链接,所以需要使用上面的语法增加链接。对于 list 追加显示 的方法,可以看这篇文章 # 9 limit限制显示数量当你查询的数据过多的时候,可能不想显示太多的内容。那么我们可以控制显示数据的数量,比如只显示10个。语法简单,不多赘述 limit 10 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |