obsidian社区插件
用表格和列表汇总罗列与当前文件有相同元数据的文件
插件ID:dataview%E5%AE%9E%E6%88%98-%E5%88%97%E5%87%BA%E4%B8%8E%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E6%9C%89%E7%9B%B8%E5%90%8C%E5%85%83%E6%95%B0%E6%8D%AE%E7%9A%84%E6%96%87%E4%BB%B6
dataview%E5%AE%9E%E6%88%98-%E5%88%97%E5%87%BA%E4%B8%8E%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E6%9C%89%E7%9B%B8%E5%90%8C%E5%85%83%E6%95%B0%E6%8D%AE%E7%9A%84%E6%96%87%E4%BB%B6
dataview%E5%AE%9E%E6%88%98 %E5%88%97%E5%87%BA%E4%B8%8E%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E6%9C%89%E7%9B%B8%E5%90%8C%E5%85%83%E6%95%B0%E6%8D%AE%E7%9A%84%E6%96%87%E4%BB%B6:Dataview 实战:列出与当前字段值相同的页面,例如,查找共享配料的食谱
用表格和列表汇总罗列与当前文件有相同元数据的文件
假设文件中包含一个元数据 配方类型::素食
,列出所有具有这个元数据的文件
```dataview
LIST
FROM "10 Example Data/food"
WHERE 配方类型 = this.配方类型
```
如果是多值属性,例如以食材做例子,文件中有 所需食材: [...]
的多值属性,想要列出和当前文件用了相同食材的其他文件
```dataview
TABLE 食材 as 共同食材
FROM "10 Example Data/food"
WHERE 所需食材
FLATTEN 所需食材 as 食材
WHERE contains(this.所需食材, 食材) AND file.name != this.file.name
```
假如当前文件 A 的所需食材包含培根、火腿,另一个文件 B 的所需食材属性也包含这两个,那么如果用上面的写法,B 文件就会在结果中出现两次。此时我们加个分组
```dataview
TABLE rows.食材 as "共同食材"
FROM "10 Example Data/food"
WHERE 所需食材
FLATTEN 所需食材 as 食材
WHERE contains(this.所需食材, 食材) AND file.name != this.file.name
GROUP BY file.link
```
这样同一个文件的内容都会放到同一行。如果我们想要的是同一个食材放到同一行呢?换句话说,我们想包含培根食材的占一行,包含火腿的占一行。其实只需要把分组条件改为食材即可。
```dataview
TABLE WITHOUT ID 食材 AS "共同食材", rows.file.link AS "食谱"
FROM "10 Example Data/food"
WHERE 所需食材
FLATTEN 所需食材 as 食材
WHERE contains(this.所需食材, 食材) AND file.name != this.file.name
GROUP BY 食材
```
最后,我们还可以利用 length()
函数统计他们的数量
```dataview
TABLE WITHOUT ID 食品 AS "共同食材", 食谱数量, rows.file.link AS 食谱
FROM "10 Example Data/food"
WHERE 所需食材
FLATTEN 所需食材 as 食材
WHERE contains(this.所需食材, 食材) AND file.name != this.file.name
GROUP BY 食材
FLATTEN length(rows.file.link) as 食谱数量
```
讨论
若阁下有独到的见解或新颖的想法,诚邀您在文章下方留言,与大家共同探讨。
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。