Obsidian Bases 基础
学习目标
- 了解 Bases 的概念与适用场景。
- 掌握创建 Base(数据库)与定义字段的方法。
- 掌握四种视图类型:表格、卡片、列表、地图。
- 掌握筛选与排序操作,实现数据快速定位。
- 了解公式(Formulas)与汇总(Summaries)的用法。
前置条件
- 已安装 Obsidian 并打开本仓库为 Vault(参考 section1/01)。
- 确认核心插件 Bases 已开启(设置 → 核心插件 → Bases)。
- 本教程基于 Obsidian Bases 核心插件,该插件为 Obsidian v1.7+ 内置功能。
Bases 插件可用性
Bases 是 Obsidian 相对较新的核心插件。如果你使用的是较旧版本(v1.6 以下),请先将 Obsidian 更新到最新版本。可以在 Obsidian → 设置 → 关于中查看当前版本。
Bases 是什么
Bases(数据库)是 Obsidian 内置的结构化数据管理工具,让你可以在笔记库中以数据库形式组织和查询内容,用于:
- 项目跟踪:管理多个任务的进度、优先级、负责人。
- 内容目录:为笔记库中的文档建立索引目录。
- 阅读清单:跟踪已读/待读的文章或书籍。
- 学习管理:记录课程、章节、学习进度。
Bases 文件以
.base格式保存(本质是 YAML 配置文件),可以纳入 Git 版本控制。
Bases 与传统表格的区别
| 特性 | Bases | 传统 Markdown 表格 |
|---|---|---|
| 数据来源 | 笔记库中的现有 .md 文件 | 表格内手动输入 |
| 动态更新 | 笔记变更后自动同步 | 需手动编辑 |
| 筛选与排序 | 支持多维筛选和排序 | 不支持 |
| 视图切换 | 表格 / 卡片 / 列表 / 地图 | 单一表格视图 |
| 公式计算 | 支持计算字段 | 不支持 |
| 文件格式 | .base(YAML 配置) | 内嵌于 .md 文件 |
步骤
第 1 步:了解核心概念
在动手之前,理解三个关键角色:
| 角色 | 说明 |
|---|---|
| Base | 一个 .base 文件,定义数据从哪里来(筛选范围)、展示哪些字段、用什么视图。 |
| 数据行 | 数据行对应 Obsidian 中的笔记文件(.md)。Base 并不会复制数据,而是引用笔记。 |
| 字段 | 字段对应笔记的Frontmatter 属性或文件元数据(如文件名、创建时间)。 |
关键理解:Base 不是独立数据库,而是笔记库的动态索引视图。你在 Base 中看到的每一行,背后都是一个真实的
.md文件。修改笔记的 Frontmatter,Base 中的数据会自动更新。
第 2 步:创建第一个 Base
方法一:通过命令面板
- 在 Obsidian 中按
Ctrl+P打开命令面板。 - 输入 “Bases”,选择 Bases:新建 Base。
- 输入 Base 名称(如 “教程目录”),按回车。
- 选择保存位置(如
section6/)。
方法二:通过文件列表
- 在左侧文件列表中,导航到目标文件夹。
- 右键点击文件夹空白处 → 新建 Base。
- 输入名称。
创建后,Obsidian 会自动打开一个空的 Base 编辑器界面。
第 3 步:了解 Base 编辑器界面
创建 Base 后,你会看到如下界面:
| 元素 | 说明 |
|---|---|
| 视图切换栏 | 顶部标签,可在表格/卡片/列表/地图间切换 |
| 工具栏 | 添加字段、设置筛选、排序、视图配置等操作按钮 |
| 数据表格 | 以行和列展示笔记数据,每行一个笔记,每列一个属性 |
| 字段列头 | 显示字段名称,点击可排序或调整 |
| 筛选条件栏 | 添加筛选条件,缩小数据范围 |
| 汇总行(底部) | 对数值字段进行汇总计算(求和、平均值等) |
第 4 步:添加数据到 Base
Base 的数据来源于笔记文件。你需要先告诉 Base 要包含哪些笔记。
通过筛选来添加数据:
- 点击工具栏的 筛选(Filter) 按钮。
- 添加筛选条件。最常用的方式是按文件夹筛选:
- 选择
Folder→is→ 输入section2。 - 这样 Base 就会显示
section2/文件夹下的所有笔记。
- 选择
通过标记来添加数据:
如果你在笔记的 Frontmatter 中使用了统一标签,可以按标签筛选:
- 点击筛选按钮。
- 添加条件:
Tags→contains→ 输入tutorial。 - 所有带
tutorial标签的笔记都会出现在 Base 中。
组合筛选条件:
Base 支持多个筛选条件组合使用:
filters:
and:
- 'file.folder == "section2"'
- 'file.hasTag("tutorial")'筛选即定义数据范围
Base 的筛选决定了哪些笔记出现在视图中。你可以随时调整筛选条件来扩大或缩小数据范围,而不影响原始笔记。
第 5 步:管理字段(列)
字段是 Base 中展示的笔记属性。默认 Base 会显示 Name(文件名)列。
添加字段:
- 点击工具栏的 字段(Fields) 或 + 按钮。
- 选择要添加的属性:
| 字段来源 | 示例 | 说明 |
|---|---|---|
| Frontmatter | status, tags, author | 笔记 Frontmatter 中定义的属性 |
| 文件属性 | file.name, file.mtime | Obsidian 自动管理的文件元数据 |
| 公式 | formula.days_old | 通过公式计算得出的值 |
- 字段会自动匹配笔记中同名属性。如果笔记没有该属性,字段值会显示为空。
常见字段速查表:
| 显示名称 | 字段 ID | 类型 | 说明 |
|---|---|---|---|
| 文件名 | file.name | 文本 | 笔记文件名(含扩展名) |
| 文件名(无后缀) | file.basename | 文本 | 不含 .md 的文件名 |
| 文件路径 | file.path | 文本 | 笔记的完整仓库路径 |
| 所属文件夹 | file.folder | 文本 | 笔记所在文件夹 |
| 创建时间 | file.ctime | 日期 | 文件创建时间 |
| 修改时间 | file.mtime | 日期 | 文件最后修改时间 |
| 标签 | file.tags | 列表 | 笔记中的所有标签 |
| 大小 | file.size | 数值 | 文件大小(字节) |
| 自定义属性 | 你定义的 Frontmatter 键 | 视类型而定 | 如 status, difficulty |
调整字段显示:
- 拖拽列头调整列顺序。
- 点击列头可对该列排序。
- 右键列头可选择删除、重命名、设置对齐方式。
第 6 步:编辑字段值
Base 中的值来源于笔记的 Frontmatter,因此修改值就是修改笔记。
在 Base 中直接编辑:
- 双击表格中的单元格。
- 输入新值,按回车确认。
- Obsidian 会自动更新对应笔记文件的 Frontmatter。
支持的字段类型:
| 类型 | 示例值 | 说明 |
|---|---|---|
| 文本 | "入门教程" | 单行文本 |
| 数值 | 42 | 整数或小数 |
| 日期 | 2026-07-03 | 日期格式 |
| 复选框 | true / false | 布尔值 |
| 列表 | ["tag1", "tag2"] | 多值数组 |
| 链接 | [[笔记链接]] | 指向其他笔记 |
编辑字段的副作用
在 Base 中编辑字段值时,实际上是修改了原始笔记文件的 Frontmatter。如果你删除了一列,笔记中的对应属性不会被删除,只是不再显示在 Base 中。
第 7 步:使用视图
Base 支持四种视图,可在顶部切换:
表格视图(Table)
最常用的视图,以行和列展示数据,适合数据浏览和批量编辑。
| 文件名 | 状态 | 优先级 |
| :----------- | :----- | :----- |
| 入门教程.md | 完成 | 高 |
| 进阶技巧.md | 进行中 | 中 |
- 适合:数据密集型任务、批量编辑、排序筛选。
- 快捷键:
Ctrl/Alt+ 点击列头排序。
卡片视图(Cards)
以卡片形式展示每条笔记,适合视觉化浏览。
┌─────────────────┐
│ 入门教程.md │
│ 状态: ✅ 完成 │
│ 优先级: ⭐⭐⭐ │
│ 标签: #basic │
└─────────────────┘
- 适合:轻量浏览、展示摘要信息。
- 可设置卡片显示的字段。
列表视图(List)
简洁的单列列表,适合快速扫描。
- 适合:长列表快速浏览、关注单字段场景。
地图视图(Map)
当笔记包含地理位置数据时,可在地图上展示。
- 适合:含位置信息的笔记(如旅行日记、门店记录)。
- 需要笔记 Frontmatter 中包含
latitude和longitude属性。
第 8 步:筛选与排序
筛选(Filter)
筛选用于缩小 Base 显示的数据范围,仅展示符合条件的笔记。
添加筛选条件:
- 点击工具栏的 筛选 图标。
- 选择一个字段作为条件。
- 选择运算符(等于、包含、大于、小于等)。
- 输入目标值。
支持的运算符:
| 运算符 | 说明 | 适用于 |
|---|---|---|
is | 等于 | 文本、数值 |
is not | 不等于 | 文本、数值 |
contains | 包含 | 文本、列表 |
does not contain | 不包含 | 文本、列表 |
greater than | 大于 | 数值、日期 |
less than | 小于 | 数值、日期 |
is empty | 为空(未设置) | 所有类型 |
is not empty | 不为空 | 所有类型 |
组合筛选:
Base 支持 AND(与)和 OR(或)组合:
- AND:所有条件都必须满足(例如:状态=完成 AND 优先级=高)。
- OR:满足任一条件即可(例如:标签=urgent OR 标签=important)。
排序(Sort)
排序用于调整数据行的展示顺序。
- 点击列头:单列排序(再次点击切换升序/降序)。
- 点击工具栏的排序图标:添加多级排序。
- 优先级:从上到下依次应用。
示例: 先按 状态 排序(进行中在上),再按 优先级 排序(高在上)。
第 9 步:使用公式(Formulas)
公式允许你创建计算字段,基于其他字段的值动态计算。
添加公式字段:
- 点击 字段 → 新公式。
- 输入公式名称(如
days_old)。 - 编写公式表达式。
常用公式示例:
formulas:
# 计算笔记创建至今的天数
days_old: "(now() - file.ctime).days"
# 条件判断:根据完成状态显示图标
status_icon: 'if(done, "✅", "⏳")'
# 格式化日期
created_date: 'file.ctime.format("YYYY-MM-DD")'
# 字符串拼接
full_title: 'file.basename + " - " + status'
# 数值计算
progress_pct: "completed / total * 100"在视图中使用公式:
公式定义后,在字段列表中会出现 formula.公式名称,可以像普通字段一样添加到视图中。
公式语法小贴士
- 字符串必须用单引号包裹。
- 日期运算结果默认是 Duration 类型,需要加
.days转为数值。- 使用
if(条件, 真值, 假值)做条件判断。- 完整函数参考可在 Obsidian 帮助文档中查看。
第 10 步:使用汇总(Summaries)
汇总是对 Base 中某一列的数值进行聚合计算,显示在表格底部。
添加汇总:
- 点击字段列头的下拉菜单。
- 选择 汇总。
- 选择汇总类型:
| 汇总类型 | 说明 | 适用字段类型 |
|---|---|---|
| 计数 | 统计非空值数量 | 所有类型 |
| 总和 | 所有值的和 | 数值 |
| 平均值 | 所有值的算术平均数 | 数值 |
| 中位数 | 排序后的中间值 | 数值 |
| 最小值 | 最小值 | 数值、日期 |
| 最大值 | 最大值 | 数值、日期 |
| 最早 | 最早的日期 | 日期 |
| 最晚 | 最晚的日期 | 日期 |
| 唯一值计数 | 去重后的值数量 | 所有类型 |
你也可以定义自定义汇总公式:
summaries:
custom_avg: "values.mean().round(3)"第 11 步:编辑 .base 文件(高级)
Base 编辑器背后是一个 YAML 配置文件。你也可以直接编辑 .base 文件实现精准控制。
打开源文件: 右键 .base 文件 → 编辑文件内容(或在 VS Code 中直接打开)。
典型结构:
---
filters:
and:
- 'file.folder == "section2"'
formulas:
days_old: "(now() - file.ctime).days"
status_icon: 'if(status == "完成", "✅", "⏳")'
properties:
file.name:
displayName: "文件名"
status:
displayName: "状态"
days_old:
displayName: "已创建天数"
views:
- type: table
name: "表格视图"
order:
- file.name
- status
- formula.days_old
summaries:
status: Count具体语法参考:
- filters:定义数据来源,支持 AND / OR / NOT 组合。
- formulas:定义计算字段。
- properties:定义字段的显示名称。
- views:定义视图类型、显示字段和汇总方式。
- summaries:定义自定义汇总公式。
扩展阅读
常见问题
Q:为什么我的 Base 中没有显示任何数据?
A:最常见的原因是筛选条件过于严格,导致没有匹配的笔记。请检查筛选条件,尝试先移除所有筛选条件,确保至少有一个笔记被匹配。
Q:Bases 和传统的 Dataview 插件有什么区别?
A:Dataview 是社区插件,使用类 SQL 查询语法,功能更强大但学习曲线较陡。Bases 是 Obsidian 官方核心插件,提供图形化界面,更适合非技术用户。
Q:修改 Base 会删除原始笔记吗?
A:不会。Base 只是笔记库的一个视图。即使删除整个 .base 文件,所有原始 .md 笔记文件依然完整保留。
Q:如何删除一个 Base?
A:直接在文件管理器中删除 .base 文件即可。这不会影响任何笔记文件。
Q:Base 中修改了值,但笔记文件没有更新?
A:请检查笔记文件的 Frontmatter 是否正确闭合(---)。格式错误的 Frontmatter 会导致属性无法写入。
Q:Base 支持多人协作吗?
A:.base 文件是纯文本 YAML,可以纳入 Git 版本控制。但多人同时编辑可能会有冲突,建议由一人负责 Base 配置的维护。