数据库功能 (Bases)
版本要求
Bases 是 Obsidian v1.7.2 引入的功能。v1.12+ 新增搜索工具栏和拖放导入功能。
Obsidian Bases 是一个强大的数据库功能,允许用户在笔记中创建和管理结构化数据。通过 Bases,你可以将分散的笔记信息整合成结构化的表格形式,方便组织、筛选和分析,实现类似 Notion 的数据库体验。
什么是 Bases
Bases 是 Obsidian 推出的结构化数据管理功能,它结合了传统笔记的灵活性和数据库的强大功能。你可以把 Bases 理解为「可以嵌入笔记的表格」,每个 Base 就像一个独立的数据库,可以存储、管理和可视化你的结构化数据。
Bases vs 传统笔记
| 特性 | 传统笔记 | Bases |
|---|---|---|
| 数据存储 | 分散在各笔记 | 结构化表格 |
| 查询能力 | 手动搜索 | 高级筛选 |
| 视图展示 | 单一格式 | 多种视图 |
| 关联能力 | 手动链接 | 关系字段 |
| 数据分析 | 困难 | 内置统计 |
Bases vs Dataview
| 特性 | Bases | Dataview |
|---|---|---|
| 内置功能 | ✅ 是 | ❌ 需安装插件 |
| 实时编辑 | ✅ 支持 | ❌ 只读视图 |
| 学习曲线 | 🟢 简单 | 🟡 中等 |
| 查询能力 | 🟡 基础 | 🟢 强大 |
| 视图类型 | 多种 | 主要是表格 |
快速开始
创建第一个 Base
方法一:右键创建
- 在文件列表中右键点击
- 选择「新建 Base」
- 为你的 Base 命名(如「阅读清单」)
- 系统会自动创建默认的表格结构
方法二:命令面板
Ctrl+P打开命令面板- 输入「新建 Base」
- 选择保存位置
- 输入名称
方法三:创建 .base 文件
- 创建新笔记,命名为
任务管理.base - 文件会自动识别为 Base 类型
基本结构
---
type: base
---
# 任务管理
## 配置数据源
source: "tasks" # 文件夹路径📊 视图类型
Bases 提供多种视图模式,满足不同的展示需求:
表格视图
最常用的视图,类似电子表格,适合批量编辑和数据分析。
适用场景:
- 数据批量录入
- 内容对比查看
- 快速筛选排序
功能:
- 列宽调整
- 列排序
- 筛选条件
- 分组显示
示例:
## 所有任务
```base
source: "tasks"
view: table
columns:
- title
- status
- due
- priority
sort:
- property: due
order: asc
```text卡片视图
以卡片形式展示记录,每个记录像一个独立的展示卡片。
适用场景:
- 项目展示
- 作品集
- 人物档案
功能:
- 封面图片显示
- 卡片样式定制
- 字段选择显示
示例:
## 项目卡片
```base
source: "projects"
view: cards
cover: image
columns:
- title
- progress
- status
```text列表视图
简洁的列表展示。
示例:
## 最近笔记
```base
source: "notes"
view: list
sort:
- property: date
order: desc
limit: 10
```text看板视图
类似 Trello 的看板布局,适合任务管理和工作流追踪。
适用场景:
- 项目进度管理
- 任务状态追踪
- 工作流程可视化
功能:
- 拖拽排序
- 状态列定制
- WIP 限制
示例:
列设置:
待办:
颜色: 灰色
WIP限制: 无
进行中:
颜色: 蓝色
WIP限制: 3
完成:
颜色: 绿色
WIP限制: 无日历视图
以日历形式展示与时间相关的数据记录。
适用场景:
- 日程管理
- 活动安排
- 日记索引
示例:
## 任务日历
```base
source: "tasks"
view: calendar
date: due
columns:
- title
- status
```text📝 字段类型
Bases 支持丰富的字段类型:
| 字段类型 | 用途说明 | 示例 |
|---|---|---|
| 文本 | 存储短文本或长文本内容 | 标题、描述 |
| 数字 | 存储数值,支持自动计算 | 价格、数量 |
| 单选 | 从预定义选项中选择单个值 | 状态、优先级 |
| 多选 | 从预定义选项中选择多个值 | 标签、分类 |
| 日期 | 存储日期和时间信息 | 截止日期、创建时间 |
| 复选框 | 存储布尔值(是/否) | 完成、重要 |
| 关系 | 关联其他 Base 中的记录 | 项目关联任务 |
| 用户 | 关联团队成员 | 负责人 |
| 文件 | 附件和媒体文件 | 附件、图片 |
| URL | 网页链接 | 参考链接 |
| 公式 | 计算字段 | 总价 = 数量 × 单价 |
| 创建时间 | 自动记录创建时间 | 创建时间 |
| 修改时间 | 自动记录修改时间 | 更新时间 |
定义字段
添加字段:
- 点击表格表头的
+按钮 - 选择字段类型
- 输入字段名称
- 根据需要配置选项
字段配置:
| 设置项 | 说明 |
|---|---|
| 字段名 | 显示名称 |
| 字段类型 | 数据类型 |
| 默认值 | 新记录的默认值 |
| 必填 | 是否必须填写 |
| 选项列表 | 单选/多选的可选项 |
🔍 筛选与排序
基础筛选
filters:
- property: status
operator: equals
value: "todo"多条件筛选
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" |
排序
sort:
- property: priority
order: desc
- property: due
order: asc分组显示
group:
- property: status
order:
- "todo"
- "in-progress"
- "done"📝 列配置
显示列
columns:
- title
- date
- status
- priority列重命名
columns:
- property: title
display: "任务名称"
- property: due
display: "截止日期"列宽度
columns:
- property: title
width: 300
- property: status
width: 100列排序
columns:
- property: priority
sortable: true
- property: due
sortable: true
defaultOrder: asc🔗 关联关系
建立关联
在笔记中添加链接属性:
---
title: 任务名称
project: "[[项目A]]"
assigned: "[[张三]]"
---关联视图
# 在项目笔记中显示相关任务
```base
source: "tasks"
filters:
- property: project
operator: equals
value: "{{title}}"
columns:
- title
- status
- due
```text双向关联
# 项目笔记
---
title: 项目A
tasks:
- "[[任务1]]"
- "[[任务2]]"
---
# 任务笔记
---
title: 任务1
project: "[[项目A]]"
---关系类型
- 一对一关系:每条记录关联一条记录
- 一对多关系:一条记录关联多条记录
- 多对多关系:多条记录相互关联
🎨 高级功能
使用公式字段
Bases 支持公式计算,可以创建计算字段:
// 数字计算
数量 * 单价
// 文本处理
"[" + 书名 + "](" + 链接 + ")"
// 条件判断
if(进度 >= 100, "完成", "进行中")
// 日期计算
dateDiff(开始日期, 结束日期, "days")
// 统计函数
sum(子任务.工时)
count(子任务)常用公式示例:
// 自动状态判断
if(截止日期 < today() AND 状态 != "完成", "逾期", 状态)
// 进度条
repeat("█", floor(进度/10)) + repeat("░", 10-floor(进度/10))
// 优先级排序
if(优先级 = "高", 1, if(优先级 = "中", 2, 3))条件格式
formatting:
- property: priority
conditions:
- value: "high"
style: "red"
- value: "medium"
style: "yellow"
- value: "low"
style: "green"搜索工具栏
v1.12+ 版本在 Bases 工具栏中添加了搜索按钮,可以快速筛选查询结果:
# 点击搜索按钮后输入关键词
# 支持模糊搜索和实时过滤拖放导入
v1.12+ 版本支持将文件直接拖放到 Bases 中:
- 从文件浏览器拖动文件到 Bases 视图
- 文件会自动添加到数据源中
- 可以批量拖入多个文件
📋 实战案例
📚 阅读管理系统
字段设计:
| 字段名 | 类型 | 说明 |
|---|---|---|
| 书名 | 文本 | 书籍名称 |
| 作者 | 文本 | 作者姓名 |
| 状态 | 单选 | 想读/在读/已读 |
| 评分 | 数字 | 1-5 星 |
| 开始日期 | 日期 | 开始阅读日期 |
| 完成日期 | 日期 | 完成日期 |
| 笔记链接 | 文件 | 关联的笔记文件 |
| 标签 | 多选 | 分类标签 |
完整示例:
---
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 |
| 负责人 | 用户 | 任务负责人 |
| 状态 | 单选 | 待办/进行中/完成 |
| 优先级 | 单选 | 高/中/低 |
| 截止日期 | 日期 | 任务截止日期 |
| 进度 | 数字 | 完成百分比 |
| 标签 | 多选 | 分类标签 |
完整示例:
---
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站/爱奇艺 |
| 笔记 | 文本 | 观后感 |
💰 财务记录系统
| 字段名 | 类型 | 说明 |
|---|---|---|
| 日期 | 日期 | 交易日期 |
| 类型 | 单选 | 收入/支出 |
| 分类 | 单选 | 餐饮/交通/娱乐... |
| 金额 | 数字 | 交易金额 |
| 支付方式 | 单选 | 现金/微信/支付宝 |
| 备注 | 文本 | 详细说明 |
| 收据 | 文件 | 收据图片 |
公式字段:
// 月度支出
sum(filter(金额, 类型 = "支出"))
// 月度收入
sum(filter(金额, 类型 = "收入"))
// 月度结余
月度收入 - 月度支出📤 数据导入导出
导入数据
支持的格式:
- CSV 文件
- Excel 文件
- JSON 数据
导入步骤:
- 点击 Base 菜单 → 导入数据
- 选择文件
- 映射字段
- 确认导入
CSV 导入示例:
书名,作者,状态,评分
人类简史,尤瓦尔·赫拉利,已读,5
原则,瑞·达利欧,在读,4
思考快与慢,丹尼尔·卡尼曼,想读,导出数据
导出选项:
- 导出为 CSV
- 导出为 JSON
- 导出为 Markdown 表格
- 复制为剪贴板
Markdown 导出:
| 书名 | 作者 | 状态 |
|------|------|------|
| 人类简史 | 尤瓦尔·赫拉利 | 已读 |
| 原则 | 瑞·达利欧 | 在读 |与属性系统联动
Bases 与 Obsidian 的属性系统(YAML Frontmatter)深度整合:
从属性创建 Base
- 收集具有相同属性的笔记
- 创建新 Base
- 选择「从笔记属性创建」
- 自动提取属性作为字段
Base 数据同步到笔记
在 Base 中编辑的数据会同步到笔记的 frontmatter:
---
type: book
title: 人类简史
author: 尤瓦尔·赫拉利
status: 已读
rating: 5
---🔧 设置选项
默认视图
设置 → Core → Bases:
| 选项 | 说明 |
|---|---|
| 默认视图 | 新建 Base 的默认视图类型 |
| 行高 | 表格行高设置 |
| 显示封面 | 卡片视图是否显示封面 |
快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl/Cmd + N | 新建行 |
Enter | 编辑单元格 |
Escape | 取消编辑 |
Delete | 删除选中行 |
插件生态
增强 Base 功能的插件
| 插件 | 功能 |
|---|---|
| DB Folder | 增强数据库功能 |
| Notion-Like Tables | Notion 风格表格 |
| Dataview | 数据查询增强 |
| Tracker | 追踪和统计 |
与 Dataview 配合
TABLE 书名, 作者, 评分
FROM "阅读清单.base"
WHERE 评分 >= 4
SORT 评分 DESC⚠️ 注意事项
性能考虑
- 大量笔记时,建议添加筛选条件
- 控制单条 Base 的记录数量(建议 < 1000 条)
- 避免过于复杂的关联关系
- 避免过度使用公式字段
- 定期清理不再使用的数据
兼容性
- Bases 使用标准 YAML 属性
- 与 Dataview 可共存
- 导出时保留所有属性数据
- Bases 数据存储在你的本地库中,安全可靠
其他注意
- 免费版用户可创建的 Base 数量有限,Pro 版本无限制
- 定期备份你的库,防止数据丢失
- 复杂的数据结构可能影响性能,保持适度复杂度
- Bases 功能仍在持续更新中,关注官方更新日志
🔗 相关资源
- 官方 Bases 文档
- Bases 社区讨论
- 属性系统 - YAML 属性详解
- Dataview 实战 - 数据查询进阶
- Properties 速查表 - 属性速查
提示
Bases 正在持续更新中,新功能会定期推出。建议关注官方更新日志,及时了解最新特性。
INFO
Bases 最适合管理结构化的数据,如项目任务、阅读清单、收藏管理等。对于自由格式的笔记,传统笔记方式仍然更适合。