关于Bases中的标签

关于Bases中的标签

概述

Bases 中有 tags 标签属性file tags 文件内标签,本文分析了两种标签的差异以及如何应用。

两种标签的差异

tags 是更明确的属性内标签,即 Property 中的 tags 这个特定属性;
file tags 是这个笔记内带有的标签,包括属性标签和出现在正文中的标签。

在公式中,仅用 tags 获取的是「属性区的标签属性」,file.tags 获取到的是全文(包括属性区)的标签。

250606_bases更新记录-img-250815_124653.webp

下图可以看出两种标签的区别:


通常来说,笔记内标签数量会大于等于属性内标签。

而过滤器中的 has tag 过滤器(公式中的 file.hasTag() 函数 )匹配的也是 file tags,范围更广。
只想匹配属性内标签的话,应该用 tags.Contains() 函数。

在过滤器中填写时,应该会自动添加上 # 前缀。

公式中的标签

file.tags.filter(value != "#task") 才是有效的,即,file.tags 中的字符串均带有 # 前缀,而 tags 则是不带井号前缀的。

在进行交叉匹配时需要考虑到这点。

提取仅出现在正文的标签

使用 filt.tags.filter() 进行过滤,并且用 slice(1) 去掉字符开头的 # 来适配。

完整代码:

file.tags.filter(!tags.contains(value.slice(1)))

如此一来可以获得「未出现在属性内,仅出现在正文」的“提及标签”:

实际应用

例如,我配合 TasksNote 插件,使用单独的「任务笔记」进行任务管理。

为了筛选出“任务笔记”,我需要明确提取带有特定属性 tags: #task 的笔记,但是希望忽略掉那些笔记内带有 #task 这种文章内标签的情况。

这个时候,使用 file.hasTag("task") 就会显示过多无关的结果,需要用 tags.contains("task") 才能精准匹配出“任务笔记”。

3 个赞

请问,我在bases的Filter那里,为什么找不到tags?其他属性都有,而且tags也确实在我文档的属性中存在。

隐藏了,在第二列过滤器中选择 has tag

1 个赞

谢谢,知道了,看之前内测版本的视频,这里显示是可以直接搜索选择“tags”的,目前我使用的正式更新版不能这样显示,方式改为在这里第一列选择“file”,然后第二列选择“has tag”,就可以用标签筛选了。