DataView

#dataview/查找表

隐式字段

Dataview 会自动为每个页面添加大量元数据:

  • file.name:文件标题(字符串)。
  • file.folder:该文件所属文件夹的路径。
  • file.path:完整的文件路径(字符串)。
  • file.ext: 文件类型的扩展名;通常是“.md”(一个字符串)。
  • file.link:文件的链接(链接)。
  • file.size:文件的大小(以字节为单位)(一个数字)。
  • file.ctime:文件的创建日期(日期+时间)。
  • file.cday:文件的创建日期(只是一个日期)。
  • file.mtime:文件最后修改的日期(日期+时间)。
  • file.mday:文件最后修改的日期(只是一个日期)。
  • file.tags:笔记中所有唯一标签的数组。子标签按每个级别细分,因此#Tag/1/A将存储在数组中[#Tag, #Tag/1, #Tag/1/A]
  • file.etags:注释中所有显式标签的数组;不像file.tags, 不包括子标签。
  • file.inlinks:指向此文件的所有传入链接的数组。
  • file.outlinks:此文件中所有传出链接的数组。
  • file.aliases:笔记的所有别名的数组。
  • file.tasks``- [ ] blah blah blah:此文件中所有任务(即,)的数组。
  • file.lists:文件中所有列表元素的数组(包括任务);这些元素是有效的任务,可以在任务视图中呈现。
  • file.frontmatter:包含所有frontmatter的原始值;主要用于检查原始 frontmatter 值或动态列出 frontmatter 键。

如果文件在其标题(表单yyyy-mm-ddyyyymmdd)中有日期,或者有一个Date字段/内联字段,它还具有以下属性:

  • file.day:与文件关联的明确日期。

如果您使用 Obsidian 默认的“加星标文件”插件,还可以使用以下元数据:

  • file.starred:如果此文件已被“星星”黑曜石插件加注星标。

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)

Special Operations

[[Link]].value (fetch value from page Link)

数据视图“源”是标识一组文件、任务或其他数据对象的东西。数据视图在内部对源进行索引,因此查询速度很快。Dataview 目前支持四种源类型:

  1. 标签:表格的来源#tag。这些匹配具有给定标签的所有文件/部分/任务。
  2. 文件夹:表格的来源"folder"。这些匹配给定文件夹中包含的所有文件/部分/任务。
  3. 特定文件:您可以通过指定其完整路径从特定文件中进行选择:"folder/File".
    • 如果文件和文件夹的路径完全相同,Dataview 将首选该文件夹。您可以通过指定扩展名来强制它从文件中读取:folder/File.md.
  4. 链接:您可以选择指向文件的链接,也可以****选择文件中的所有链接。
    • 要获取链接到的 [[note]]所有页面,请使用[[note]].
    • 要获取链接 [[note]]所有页面(即该文件中的所有链接),请使用outgoing([[note]]).
    • [[#]]您可以通过或隐式引用当前文件[[]]

您可以组合这些过滤器,以便使用and和获得更高级的资源or

  • 例如,#tag and "folder"将返回所有页面folder#tag.
  • 查询 from#food and !#fastfood只会返回包含#food但不包含#fastfood.
  • [[Food]] or [[Exercise]]将给出任何链接到[[Food]]OR的页面[[Exercise]]

如果您有复杂的查询,分组或优先级很重要,您可以使用括号对它们进行逻辑分组:

  • #tag and ("folder" or #other-tag)
  • (#tag1 or #tag2) and (#tag3 or #tag4)

源用于FROM 查询语句以及各种 JavaScript API 查询调用。