Skip to content

数据库功能 (Bases)

版本要求

Bases 是 Obsidian v1.7.2 引入的功能。v1.12+ 新增搜索工具栏和拖放导入功能。

Obsidian Bases 是一个强大的数据库功能,允许用户在笔记中创建和管理结构化数据。通过 Bases,你可以将分散的笔记信息整合成结构化的表格形式,方便组织、筛选和分析,实现类似 Notion 的数据库体验。

什么是 Bases

Bases 是 Obsidian 推出的结构化数据管理功能,它结合了传统笔记的灵活性和数据库的强大功能。你可以把 Bases 理解为「可以嵌入笔记的表格」,每个 Base 就像一个独立的数据库,可以存储、管理和可视化你的结构化数据。

Bases vs 传统笔记

特性传统笔记Bases
数据存储分散在各笔记结构化表格
查询能力手动搜索高级筛选
视图展示单一格式多种视图
关联能力手动链接关系字段
数据分析困难内置统计

Bases vs Dataview

特性BasesDataview
内置功能✅ 是❌ 需安装插件
实时编辑✅ 支持❌ 只读视图
学习曲线🟢 简单🟡 中等
查询能力🟡 基础🟢 强大
视图类型多种主要是表格

快速开始

创建第一个 Base

方法一:右键创建

  1. 在文件列表中右键点击
  2. 选择「新建 Base」
  3. 为你的 Base 命名(如「阅读清单」)
  4. 系统会自动创建默认的表格结构

方法二:命令面板

  1. Ctrl+P 打开命令面板
  2. 输入「新建 Base」
  3. 选择保存位置
  4. 输入名称

方法三:创建 .base 文件

  1. 创建新笔记,命名为 任务管理.base
  2. 文件会自动识别为 Base 类型

基本结构

markdown
---
type: base
---

# 任务管理

## 配置数据源

source: "tasks"  # 文件夹路径

📊 视图类型

Bases 提供多种视图模式,满足不同的展示需求:

表格视图

最常用的视图,类似电子表格,适合批量编辑和数据分析。

适用场景:

  • 数据批量录入
  • 内容对比查看
  • 快速筛选排序

功能:

  • 列宽调整
  • 列排序
  • 筛选条件
  • 分组显示

示例:

markdown
## 所有任务

```base
source: "tasks"
view: table
columns:
  - title
  - status
  - due
  - priority
sort:
  - property: due
    order: asc
```text

卡片视图

以卡片形式展示记录,每个记录像一个独立的展示卡片。

适用场景:

  • 项目展示
  • 作品集
  • 人物档案

功能:

  • 封面图片显示
  • 卡片样式定制
  • 字段选择显示

示例:

markdown
## 项目卡片

```base
source: "projects"
view: cards
cover: image
columns:
  - title
  - progress
  - status
```text

列表视图

简洁的列表展示。

示例:

markdown
## 最近笔记

```base
source: "notes"
view: list
sort:
  - property: date
    order: desc
limit: 10
```text

看板视图

类似 Trello 的看板布局,适合任务管理和工作流追踪。

适用场景:

  • 项目进度管理
  • 任务状态追踪
  • 工作流程可视化

功能:

  • 拖拽排序
  • 状态列定制
  • WIP 限制

示例:

yaml
列设置:
  待办:
    颜色: 灰色
    WIP限制: 
  进行中:
    颜色: 蓝色
    WIP限制: 3
  完成:
    颜色: 绿色
    WIP限制: 

日历视图

以日历形式展示与时间相关的数据记录。

适用场景:

  • 日程管理
  • 活动安排
  • 日记索引

示例:

markdown
## 任务日历

```base
source: "tasks"
view: calendar
date: due
columns:
  - title
  - status
```text

📝 字段类型

Bases 支持丰富的字段类型:

字段类型用途说明示例
文本存储短文本或长文本内容标题、描述
数字存储数值,支持自动计算价格、数量
单选从预定义选项中选择单个值状态、优先级
多选从预定义选项中选择多个值标签、分类
日期存储日期和时间信息截止日期、创建时间
复选框存储布尔值(是/否)完成、重要
关系关联其他 Base 中的记录项目关联任务
用户关联团队成员负责人
文件附件和媒体文件附件、图片
URL网页链接参考链接
公式计算字段总价 = 数量 × 单价
创建时间自动记录创建时间创建时间
修改时间自动记录修改时间更新时间

定义字段

添加字段:

  1. 点击表格表头的 + 按钮
  2. 选择字段类型
  3. 输入字段名称
  4. 根据需要配置选项

字段配置:

设置项说明
字段名显示名称
字段类型数据类型
默认值新记录的默认值
必填是否必须填写
选项列表单选/多选的可选项

🔍 筛选与排序

基础筛选

yaml
filters:
  - property: status
    operator: equals
    value: "todo"

多条件筛选

yaml
filters:
  - property: status
    operator: equals
    value: "todo"
  - conjunction: and
  - property: priority
    operator: equals
    value: "high"

筛选操作符

操作符说明示例
equals等于status equals "done"
not_equals不等于status not_equals "archived"
contains包含tags contains "work"
starts_with开头是title starts_with "项目"
ends_with结尾是title ends_with "笔记"
is_empty为空due is_empty
is_not_empty不为空tags is_not_empty
before之前due before "2024-02-01"
after之后due after "2024-01-01"

排序

yaml
sort:
  - property: priority
    order: desc
  - property: due
    order: asc

分组显示

yaml
group:
  - property: status
    order:
      - "todo"
      - "in-progress"
      - "done"

📝 列配置

显示列

yaml
columns:
  - title
  - date
  - status
  - priority

列重命名

yaml
columns:
  - property: title
    display: "任务名称"
  - property: due
    display: "截止日期"

列宽度

yaml
columns:
  - property: title
    width: 300
  - property: status
    width: 100

列排序

yaml
columns:
  - property: priority
    sortable: true
  - property: due
    sortable: true
    defaultOrder: asc

🔗 关联关系

建立关联

在笔记中添加链接属性:

yaml
---
title: 任务名称
project: "[[项目A]]"
assigned: "[[张三]]"
---

关联视图

yaml
# 在项目笔记中显示相关任务
```base
source: "tasks"
filters:
  - property: project
    operator: equals
    value: "{{title}}"
columns:
  - title
  - status
  - due
```text

双向关联

yaml
# 项目笔记
---
title: 项目A
tasks:
  - "[[任务1]]"
  - "[[任务2]]"
---

# 任务笔记
---
title: 任务1
project: "[[项目A]]"
---

关系类型

  • 一对一关系:每条记录关联一条记录
  • 一对多关系:一条记录关联多条记录
  • 多对多关系:多条记录相互关联

🎨 高级功能

使用公式字段

Bases 支持公式计算,可以创建计算字段:

javascript
// 数字计算
数量 * 单价

// 文本处理
"[" + 书名 + "](" + 链接 + ")"

// 条件判断
if(进度 >= 100, "完成", "进行中")

// 日期计算
dateDiff(开始日期, 结束日期, "days")

// 统计函数
sum(子任务.工时)
count(子任务)

常用公式示例:

javascript
// 自动状态判断
if(截止日期 < today() AND 状态 != "完成", "逾期", 状态)

// 进度条
repeat("█", floor(进度/10)) + repeat("░", 10-floor(进度/10))

// 优先级排序
if(优先级 = "高", 1, if(优先级 = "中", 2, 3))

条件格式

yaml
formatting:
  - property: priority
    conditions:
      - value: "high"
        style: "red"
      - value: "medium"
        style: "yellow"
      - value: "low"
        style: "green"

搜索工具栏

v1.12+ 版本在 Bases 工具栏中添加了搜索按钮,可以快速筛选查询结果:

yaml
# 点击搜索按钮后输入关键词
# 支持模糊搜索和实时过滤

拖放导入

v1.12+ 版本支持将文件直接拖放到 Bases 中:

  1. 从文件浏览器拖动文件到 Bases 视图
  2. 文件会自动添加到数据源中
  3. 可以批量拖入多个文件

📋 实战案例

📚 阅读管理系统

字段设计:

字段名类型说明
书名文本书籍名称
作者文本作者姓名
状态单选想读/在读/已读
评分数字1-5 星
开始日期日期开始阅读日期
完成日期日期完成日期
笔记链接文件关联的笔记文件
标签多选分类标签

完整示例:

markdown
---
type: base
---

# 我的书架

## 📚 所有书籍

```base
source: "books"
view: cards
cover: cover
columns:
  - property: title
    display: "书名"
  - property: author
    display: "作者"
  - property: rating
    display: "评分"
  - property: status
    display: "状态"
filters:
  - property: type
    operator: equals
    value: "book"
sort:
  - property: date-added
    order: desc
```text

## 📖 正在阅读

```base
source: "books"
view: list
filters:
  - property: status
    operator: equals
    value: "reading"
```text

📋 项目任务管理

字段设计:

字段名类型说明
任务名称文本任务标题
项目关系关联项目 Base
负责人用户任务负责人
状态单选待办/进行中/完成
优先级单选高/中/低
截止日期日期任务截止日期
进度数字完成百分比
标签多选分类标签

完整示例:

markdown
---
type: base
---

# 任务管理

## 📋 待办任务

```base
source: "tasks"
view: table
filters:
  - property: status
    operator: not_equals
    value: "done"
columns:
  - property: title
    display: "任务"
    width: 250
  - property: priority
    display: "优先级"
    width: 80
  - property: due
    display: "截止日期"
    width: 100
  - property: project
    display: "项目"
    width: 150
sort:
  - property: priority
    order: desc
  - property: due
    order: asc
```text

## 📊 按项目分组

```base
source: "tasks"
view: table
group:
  - property: project
columns:
  - title
  - status
  - due
```text

🎬 影视收藏管理

字段名类型说明
名称文本影视名称
类型单选电影/电视剧/纪录片
状态单选想看/在看/已看
评分数字1-10 分
观看日期日期观看日期
海报文件海报图片
平台多选Netflix/B站/爱奇艺
笔记文本观后感

💰 财务记录系统

字段名类型说明
日期日期交易日期
类型单选收入/支出
分类单选餐饮/交通/娱乐...
金额数字交易金额
支付方式单选现金/微信/支付宝
备注文本详细说明
收据文件收据图片

公式字段:

javascript
// 月度支出
sum(filter(金额, 类型 = "支出"))

// 月度收入
sum(filter(金额, 类型 = "收入"))

// 月度结余
月度收入 - 月度支出

📤 数据导入导出

导入数据

支持的格式:

  • CSV 文件
  • Excel 文件
  • JSON 数据

导入步骤:

  1. 点击 Base 菜单 → 导入数据
  2. 选择文件
  3. 映射字段
  4. 确认导入

CSV 导入示例:

csv
书名,作者,状态,评分
人类简史,尤瓦尔·赫拉利,已读,5
原则,瑞·达利欧,在读,4
思考快与慢,丹尼尔·卡尼曼,想读,

导出数据

导出选项:

  • 导出为 CSV
  • 导出为 JSON
  • 导出为 Markdown 表格
  • 复制为剪贴板

Markdown 导出:

markdown
| 书名 | 作者 | 状态 |
|------|------|------|
| 人类简史 | 尤瓦尔·赫拉利 | 已读 |
| 原则 | 瑞·达利欧 | 在读 |

与属性系统联动

Bases 与 Obsidian 的属性系统(YAML Frontmatter)深度整合:

从属性创建 Base

  1. 收集具有相同属性的笔记
  2. 创建新 Base
  3. 选择「从笔记属性创建」
  4. 自动提取属性作为字段

Base 数据同步到笔记

在 Base 中编辑的数据会同步到笔记的 frontmatter:

yaml
---
type: book
title: 人类简史
author: 尤瓦尔·赫拉利
status: 已读
rating: 5
---

🔧 设置选项

默认视图

设置 → Core → Bases:

选项说明
默认视图新建 Base 的默认视图类型
行高表格行高设置
显示封面卡片视图是否显示封面

快捷键

快捷键功能
Ctrl/Cmd + N新建行
Enter编辑单元格
Escape取消编辑
Delete删除选中行

插件生态

增强 Base 功能的插件

插件功能
DB Folder增强数据库功能
Notion-Like TablesNotion 风格表格
Dataview数据查询增强
Tracker追踪和统计

与 Dataview 配合

dataview
TABLE 书名, 作者, 评分
FROM "阅读清单.base"
WHERE 评分 >= 4
SORT 评分 DESC

⚠️ 注意事项

性能考虑

  • 大量笔记时,建议添加筛选条件
  • 控制单条 Base 的记录数量(建议 < 1000 条)
  • 避免过于复杂的关联关系
  • 避免过度使用公式字段
  • 定期清理不再使用的数据

兼容性

  • Bases 使用标准 YAML 属性
  • 与 Dataview 可共存
  • 导出时保留所有属性数据
  • Bases 数据存储在你的本地库中,安全可靠

其他注意

  • 免费版用户可创建的 Base 数量有限,Pro 版本无限制
  • 定期备份你的库,防止数据丢失
  • 复杂的数据结构可能影响性能,保持适度复杂度
  • Bases 功能仍在持续更新中,关注官方更新日志

🔗 相关资源


提示

Bases 正在持续更新中,新功能会定期推出。建议关注官方更新日志,及时了解最新特性。

INFO

Bases 最适合管理结构化的数据,如项目任务、阅读清单、收藏管理等。对于自由格式的笔记,传统笔记方式仍然更适合。