程序员老鬼

Obsidian Dataview 新手到高手:打造你的个人知识数据库

看到“Dataview”这仨字,我脑子里直接浮现一个画面:原本一堆散落在笔记本角落的 Markdown 文件,突然排队变阵、自己站成一个整齐的数据库表格,还会动、能排序、能筛选,简直像《哈利波特》里的活地图一样神奇。最重要的是——这一切都在你本地 Vault 里安安静静地运行,没人打扰,也不怕隐私泄露,稳得一批。

我用 Obsidian 也有一段时间了,说实话最早那会儿写笔记还真就是“写而已”,各种文本堆在文件夹里,看起来挺满足的,但真要找资料、查记录,基本就靠搜索 + 眼力,稍微一多就全乱套。直到某天被一篇安利种草了 Dataview,我内心只剩一个字:卧槽。

Dataview 把 Obsidian 从一个“高级记事本”直接升级成了自建数据库系统,你可以查询、分析、分组、自动生成任务清单,哪怕你一点代码不会,也能用最基础的 DQL 语法搞出堪比“Excel 多维透视表”的效果。会点 JavaScript?DataviewJS 直接送你起飞,在 Obsidian 里搞统计报表、生成时间轴、制作互动式仪表板,统统不在话下。

Image

接下来,咱就从最基础的介绍,到下载安装、使用技巧、实际案例,一站式带你玩转 Dataview,把你的笔记真正变成一个“能思考”的知识系统。

🧠 Dataview 是什么?

用一句人话说:Dataview 就是让你的笔记动起来的插件。

它不是用来写笔记的,它是用来读你写的笔记的,然后帮你提取有用信息,以各种方式展示出来:表格、列表、任务、分组、可视化、脚本化……你把它当“笔记搜索引擎 + 报表工具 + 数据中心”理解也不为过。

它能干嘛?

能力
举个栗子
自动生成表格
显示我玩过的所有游戏、评分、时长
动态任务列表
列出所有项目中的未完成任务
分组分析
按书籍类型分组显示我2024年读过的书
数据过滤
显示评分大于8分的电影笔记
JS逻辑处理
统计今年各类型的阅读总数
自动更新
新增笔记自动加入到展示中,无需人工更新

是不是有点像 Notion 的数据库视图?但这可是在 Obsidian 里实现的,数据100%离线、本地可控、自由度暴击高。

Image

🏷️ 元数据写法:Dataview 的“食材”

Dataview 再强大,也得靠你的笔记里有“食材”才能炒菜,而它的“食材”就是元数据(metadata)。

📁 YAML Frontmatter

写在文件头部的三道 --- 之间:

---
title: The Witcher 3
time-played: 120
rating: 9.8
genre: CRPG
---

优点:

  • 规范、结构化
  • Dataview 识别度100%
  • 特别适合项目、书籍、游戏这类“结构清晰”的笔记

✏️ 行内元数据(Inline Fields)

直接写在正文里:

Time Played:: 120  
Rating:: 9.8  
Genre:: CRPG

优点:

  • 灵活、快速、可嵌在笔记内容中
  • 更加“人类可读”,不影响笔记排版

🧠 小建议:写项目、书单、游戏等要分析的笔记,就用 YAML;写灵感笔记、日常记录等轻量的,就用行内元数据,混搭最舒服。

Image

🛠️ 安装 Dataview 插件

这一步不急,我知道你还在激情上头阶段,不过记下来,晚点动手照着来就行。

离线安装(国内风格)
    1. 如果你无法在线安装插件,别担心,我已经把热门插件下载好了
    1. 点击下方公众号,回复关键字:Obsidian,获取Obsidian资料合集。

(注意,这个步骤别急着开头就做,先把功能摸透更有动力)

📥 安装步骤

  1. 打开 Obsidian 设置 → “社区插件”
  2. 启用“安全模式”
  3. 点击“浏览”按钮,搜索 Dataview
  4. 找到后点击“安装”→ 然后“启用”
  5. 重启一下 Obsidian,看到 dataview 块就能用了!

📦 国内用户可以关注一些公众号、社区分享获取 .zip 文件手动安装。

🧾 DQL 查询语法:新手也能秒上手

Dataview 有四种使用方式,今天先聊前两种(对新手最友好)。

🪄 TABLE 表格模式

```dataview
table time-played, rating
from "games"
sort rating desc

效果:从 games 文件夹下拉出所有笔记的 time-played 和 rating 字段,以表格形式展示并按评分倒序排列。

🧾 LIST 列表模式

```dataview
list from #book/scifi or #book/fantasy

效果:列出所有标签是 #book/scifi 或 #book/fantasy 的笔记标题。

✅ TASK 任务模式

```dataview
task from #projects/active

效果:展示带有 #projects/active 标签的所有未完成任务。

💻 进阶玩法:DataviewJS 真·变形金刚

如果你稍微懂点 JavaScript,DataviewJS 会给你打开另一个世界。

举个例子:分组展示你 2024 年读的书,按类型分组、按评分排序。

for (let group of dv.pages("#book")
    .where(p => p["time-read"].year == 2024)
    .groupBy(p => p.genre)) {

    dv.header(3, group.key);
    dv.table(["书名", "阅读时间", "评分"],
        group.rows
            .sort(k => k.rating, 'desc')
            .map(k => [k.file.link, k["time-read"], k.rating])
    );
}

是不是感觉有点像把 Notion + Excel + JavaScript 拿捏得死死的?

🧪 使用场景分享:鬼哥的日常“花式用法”

🎮 游戏记录排行榜

文件结构:

---
title: Elden Ring
time-played: 85
rating: 9.5
genre: ARPG
---

DQL 查询:

table title, time-played, rating
from "games"
sort rating desc

效果:我家来朋友想找游戏玩,我直接打开这页给他看排行榜,比 Steam 商店还清爽。

📚 读书统计年报

文件结构:

---
title: Project Hail Mary
time-read: 2024-03-18
genre: Sci-Fi
rating: 9.3
---

JS 查询:

let books = dv.pages('"books"')
  .where(b => b["time-read"] && b["time-read"].year === 2024)
  .groupBy(b => b.genre);

for (let group of books) {
  dv.header(2, group.key);
  dv.table(["书名", "时间", "评分"], 
    group.rows.map(b => [b.file.link, b["time-read"], b.rating]));
}

效果:自动生成我的 2024 年度阅读榜单,按类型分组,一目了然。

🧩 跨项目任务清单

在各个项目文件里写:

- [ ] 完成接口联调 #projects/active
- [x] 写技术文档
- [ ] 提交上线申请 #projects/active

任务查询页:

task from #projects/active

效果:所有项目的任务集合在一起自动汇总,变成一个动态的“总控制板”。

Image

🧠 我的使用心得

用了大半年,我真的对 Dataview 有种“笔记革命”的感觉:

  • 🔍 不再靠搜索关键词翻文件,全自动聚合
  • 📊 数据一致、结构清晰,让人有动力整理笔记
  • 🛠 查询逻辑自由组合,数据面板随便搭
  • 👁️ 信息呈现不再死板,真正做到“信息可视化”

你知道吗?我以前写完读书笔记基本就是存档,写了就忘。现在会主动给每本书打标签、标时间、评分,就为了让 Dataview 把它们“排起来”,看着那种整齐有序的展示真的超级爽,甚至会想多读几本来“丰富图表”。

如果你也在用 Obsidian,但还停留在“笔记堆积”的阶段,我真心建议你试试 Dataview。这插件不是来花哨装饰的,它是真的把你的数据“调起来”,让笔记真正成为你的第二大脑,还是会写 SQL 的那种。

把笔记变成能动能思考的数据面板,从你装上 Dataview 的那一刻就开始了。信我,值得你好好折腾。

点击下方公众号,回复关键字:Obsidian,获取Obsidian资料合集。

-END-

ok,今天先说到这,如果你想更深入的了解Obsidian,现在只要购买我们的《Obsidian实操案例课》,便可免费加入「玩转效率笔记」社群,与一群人交流效率提升的经验,实现自我管理的目标。图片