本文主要是介绍Obsidian dataview 高级使用技巧 【文件筛选/排序/分组/限制】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
入门介绍在《Obsidian dataview 使用入门》, 本文主要补充进阶的筛选技巧和语法。
问题场景
使用Dataview之后,可以快速生成所有文件生成目录。 当文件数量太多时,会需要对文件进行筛选、排序、分组、限制等操作。
要求:根据条件返回文件链接。
注意:这里不使用日历和任务功能
查询语法结构
通用查询格式
List
FROM "文件夹路径"
条件指令1
条件指令2
……
语法说明:
- 指令包括筛选、排序、分组、限制等等
- 指令必须在
FROM
语句之后 - 可以多次使用
- 没有顺序要求
- 按照位置顺序执行
一、Where 筛选
1. 条件筛选(Where)
TABLE
FROM "文件夹"
WHERE file.name = "Scribble"
2. 比较筛选
- 比较符号和其他语法一样:
<
,>
,<=
,>=
,=
,!=
LIST
FROM "Games"
WHERE price > 10
3. 多条件(AND)
- 增加条件用
AND
连接
TASK
WHERE typeof(due) = "date" AND due <= date(today)
4. 包含(contain)
- 文件名包含“WIP”的文件
LIST
WHERE contains(file.name, "WIP")
5. Lambdas
太复杂了应该不会用到。
二、SORT 排序
- 排序:
ASCENDING/ASC
;DESCENDING/DESC
- 可以多条件排序,用逗号
,
分隔 - 直接用SORT 不要加 by
SORT field1 [ASCENDING/DESCENDING/ASC/DESC], ..., fieldN [ASC/DESC]
三、GROUP BY 分组
- 可以加括号重命名
GROUP BY (computed_field) AS name
- 一定要加上
rows.file.link
!!! 否则就会只会有条件,没结果。
LIST rows.file.link
GROUP BY type
不加rows.file.link | 加上rows.file.link |
---|---|
四、LIMIT限制
- 限制返回的结果数量
LIMIT 5
五、FLATTEN
暂时用不上跳过。
六、WITHOUT ID
- 只返回需要的内容,不要文件或者分组条件。
WITHOUT ID
不接逗号
- 也可以结合使用,给文件链接列重命名
官方的汇总:
# Literals
1 (number)
true/false (boolean)
"text" (text)
date(2021-04-18) (date)
dur(1 day) (duration)
[[Link]] (link)
[1, 2, 3] (list)
{ a: 1, b: 2 } (object)# Lambdas
(x1, x2) => ... (lambda)# References
field (directly refer to a field)
simple-field (refer to fields with spaces/punctuation in them like "Simple Field!")
a.b (if a is an object, retrieve field named 'b')
a[expr] (if a is an object or array, retrieve field with name specified by expression 'expr')
f(a, b, ...) (call a function called `f` on arguments a, b, ...)# Arithmetic
a + b (addition)
a - b (subtraction)
a * b (multiplication)
a / b (division)
a % b (modulo / remainder of division)# Comparison
a > b (check if a is greater than b)
a < b (check if a is less than b)
a = b (check if a equals b)
a != b (check if a does not equal b)
a <= b (check if a is less than or equal to b)
a >= b (check if a is greater than or equal to b)# Stringsa + b (string concatenation)
a * num (repeat string <num> times)# Special Operations
[[Link]].value (fetch `value` from page `Link`)
参考链接:https://blacksmithgu.github.io/obsidian-dataview/reference/expressions/
https://blacksmithgu.github.io/obsidian-dataview/queries/query-types/
这篇关于Obsidian dataview 高级使用技巧 【文件筛选/排序/分组/限制】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!