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

方法一:通过命令面板

  1. 在 Obsidian 中按 Ctrl+P 打开命令面板。
  2. 输入 “Bases”,选择 Bases:新建 Base
  3. 输入 Base 名称(如 “教程目录”),按回车。
  4. 选择保存位置(如 section6/)。

方法二:通过文件列表

  1. 在左侧文件列表中,导航到目标文件夹。
  2. 右键点击文件夹空白处 → 新建 Base
  3. 输入名称。

创建后,Obsidian 会自动打开一个空的 Base 编辑器界面。

第 3 步:了解 Base 编辑器界面

创建 Base 后,你会看到如下界面:

元素说明
视图切换栏顶部标签,可在表格/卡片/列表/地图间切换
工具栏添加字段、设置筛选、排序、视图配置等操作按钮
数据表格以行和列展示笔记数据,每行一个笔记,每列一个属性
字段列头显示字段名称,点击可排序或调整
筛选条件栏添加筛选条件,缩小数据范围
汇总行(底部)对数值字段进行汇总计算(求和、平均值等)

第 4 步:添加数据到 Base

Base 的数据来源于笔记文件。你需要先告诉 Base 要包含哪些笔记

通过筛选来添加数据:

  1. 点击工具栏的 筛选(Filter) 按钮。
  2. 添加筛选条件。最常用的方式是按文件夹筛选:
    • 选择 Folderis → 输入 section2
    • 这样 Base 就会显示 section2/ 文件夹下的所有笔记。

通过标记来添加数据:

如果你在笔记的 Frontmatter 中使用了统一标签,可以按标签筛选:

  1. 点击筛选按钮。
  2. 添加条件:Tagscontains → 输入 tutorial
  3. 所有带 tutorial 标签的笔记都会出现在 Base 中。

组合筛选条件:

Base 支持多个筛选条件组合使用:

filters:
  and:
    - 'file.folder == "section2"'
    - 'file.hasTag("tutorial")'

筛选即定义数据范围

Base 的筛选决定了哪些笔记出现在视图中。你可以随时调整筛选条件来扩大或缩小数据范围,而不影响原始笔记。

第 5 步:管理字段(列)

字段是 Base 中展示的笔记属性。默认 Base 会显示 Name(文件名)列。

添加字段:

  1. 点击工具栏的 字段(Fields)+ 按钮。
  2. 选择要添加的属性:
字段来源示例说明
Frontmatterstatus, tags, author笔记 Frontmatter 中定义的属性
文件属性file.name, file.mtimeObsidian 自动管理的文件元数据
公式formula.days_old通过公式计算得出的值
  1. 字段会自动匹配笔记中同名属性。如果笔记没有该属性,字段值会显示为空。

常见字段速查表:

显示名称字段 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 中直接编辑:

  1. 双击表格中的单元格。
  2. 输入新值,按回车确认。
  3. 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 中包含 latitudelongitude 属性。

第 8 步:筛选与排序

筛选(Filter)

筛选用于缩小 Base 显示的数据范围,仅展示符合条件的笔记。

添加筛选条件:

  1. 点击工具栏的 筛选 图标。
  2. 选择一个字段作为条件。
  3. 选择运算符(等于、包含、大于、小于等)。
  4. 输入目标值。

支持的运算符:

运算符说明适用于
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)

排序用于调整数据行的展示顺序。

  1. 点击列头:单列排序(再次点击切换升序/降序)。
  2. 点击工具栏的排序图标:添加多级排序。
  3. 优先级:从上到下依次应用。

示例: 先按 状态 排序(进行中在上),再按 优先级 排序(高在上)。

第 9 步:使用公式(Formulas)

公式允许你创建计算字段,基于其他字段的值动态计算。

添加公式字段:

  1. 点击 字段新公式
  2. 输入公式名称(如 days_old)。
  3. 编写公式表达式。

常用公式示例:

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 中某一列的数值进行聚合计算,显示在表格底部。

添加汇总:

  1. 点击字段列头的下拉菜单。
  2. 选择 汇总
  3. 选择汇总类型:
汇总类型说明适用字段类型
计数统计非空值数量所有类型
总和所有值的和数值
平均值所有值的算术平均数数值
中位数排序后的中间值数值
最小值最小值数值、日期
最大值最大值数值、日期
最早最早的日期日期
最晚最晚的日期日期
唯一值计数去重后的值数量所有类型

你也可以定义自定义汇总公式:

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 配置的维护。