数据库(.base)
更新日期:2026-07-26
通过.base文件,你可以把笔记变成数据库:表格、看板、日历——支持筛选、类型化属性以及数据库之间的关联。这个概念类似于Notion的数据库,但有一个决定性的区别:数据不存在于数据库中,而是存在于你的笔记里。
提示: 如果你使用PARA、GTD、Zettelkasten或Journal模板新建仓库(参见快速上手),配套的数据库已经设置好并相互关联——这是了解各部分如何协同工作的一个很好的起点。
核心概念
一个.base文件只存储你笔记的视图:使用哪些来源(文件夹、标签)、哪些视图、哪些筛选条件和列。真正的数值保存在每篇Markdown笔记各自的Frontmatter中——每一行表格数据就是一篇笔记。
具体来说,这意味着:
- 编辑表格中的一个单元格,Plainva会把这个值写入该笔记的Frontmatter。
- 删除
.base文件,你只会丢失这个视图——所有数据仍保留在笔记中。 - 同一批笔记可以同时出现在任意数量的数据库中。
该文件格式与Obsidian的Bases格式兼容(详见本页末尾)。
创建数据库
- 文件树:右键点击→新建数据库(.base)——或通过侧边栏的新建按钮(新建数据库)。
- 新建数据库向导会询问两件事:数据来源(至少一个文件夹或一个标签;组合使用会缩小结果范围——实时计数器会显示有多少笔记匹配)以及列(在匹配的笔记中找到的属性,可直接采用)。然后点击创建数据库。
- 在笔记内:斜杠命令嵌入数据库(内联显示一个已有的
.base)或创建内联数据库(在当前文件夹新建一个.base并嵌入)。
每个数据库都可以拥有自己的图标,并设置数据库图标颜色——在文件树、标签页和页眉中都可见。
数据库也可以充当仓库的默认任务数据库(设置 → 仓库 → 内容与结构):这样一来,任务视图会把该数据库的条目显示为一个独立部分,并能把笔记中的复选框移动进去。
视图
一个数据库可以有任意数量的视图,每个视图都有一个视图类型:
| 视图 | 用途 |
|---|---|
| 表格 | 经典的网格视图,可排序,支持内联编辑和可选的子项 |
| 列表 | 紧凑的行列表 |
| 画廊 | 卡片形式,可选封面图 |
| 看板 | 按属性分组的看板列(分组依据)——在列之间拖动卡片会改变对应的值;拖动列标题可重新排序列 |
| 日历 | 按日期字段在月历上显示条目,可拖动调整 |
| 时间轴 | 时间轴视图,带开始日期和可选的结束日期 |
| 便签板 | 类似 Google Keep 的便签墙——卡片展示渲染后的笔记内容(详见下方专门章节) |
添加视图可以创建更多视图;视图选项提供重命名、创建副本、删除和拖动排序。Plainva会记住每个文件最后使用的视图。日历和时间轴需要一个日期字段(格式为仅日期或日期和时间);条目会显示属性中启用的字段。
配置:视图、列、筛选、排序、数据来源选项卡
配置按钮(右上角)会在正在使用的视图旁边打开面板,这样每次更改都会立即显示在表格或看板中。顶部的选项卡用于选择一个区域——一次只显示一个,而不是一长串列表。一个小标记会显示每个区域影响的是此视图还是整个数据库:
- 视图——以图标磁贴选择器形式呈现的视图类型(表格、列表、卡片、看板、画廊、日历、时间轴、便签板),以及各类型专属的选项:看板的分组依据和列颜色、日历/时间轴的日期字段、画廊的封面图、子项、日期格式。这些选择器只会显示类型匹配的属性:日期字段只显示日期类型的属性,分组依据只显示单选、状态、多选或关联类型的属性,封面图只显示文本或URL类型的属性。对于关系图视图类型,属性选项卡会被禁用——关系图不显示任何列(颜色、大小、边等选项在其自己的工具栏中设置)。
- 列——视图的属性,分为显示和隐藏两部分。点击眼睛图标可以显示或隐藏某一列;拖动手柄可以调整顺序。每一行都会显示字段类型标记,齿轮图标可打开列编辑器,新建属性可添加一个新的。
- 筛选——每条规则都会显示为一句易读的**“芯片语句”(例如“状态不是已完成”);点击即可展开编辑器(属性、运算符、值)。运算符会根据字段类型自动调整:是 / 不是 / 包含 / 不包含 / 为空 / 不为空,数字类型有大于** / 小于 / 至少 / 至多,日期类型有晚于 / 早于 / 从 / 截至。顶部的逻辑决定是必须满足全部条件(AND)还是满足任一条件(OR)。添加组可以构建类似Notion的筛选组:在主逻辑内部拥有自己独立AND/OR逻辑的一个方框。来自Obsidian的深层嵌套筛选会显示为复杂筛选(不可编辑)——它们会被保留并生效。筛选条件按视图分别保存;这一切都保存在
.base文件中,而不是存放在单独的存储里。 - 排序——多条排序规则(升序/降序);拖动可调整优先级。
- 数据来源——数据库的文件夹和标签来源(也可以选择根文件夹)。没有来源=显示所有文件。适用于整个数据库,而不仅仅是当前活动的视图。
在手机上,配置会以列表形式打开相同的区域;点击其中一项会进入对应的详情区域,返回箭头则会退出该区域。
属性与字段类型
点击列标题会打开属性编辑器(属性:X):
- 名称——重命名会影响笔记:保存时,该属性会在每一篇匹配笔记的Frontmatter中被重命名(会有确认提示和进度指示)。
- 字段类型——文本、数字、复选框、日期、日期和时间、列表、标签、单选、状态、多选、URL、邮箱、电话、关联(与笔记属性面板中相同的分组类型菜单)。
- 选项(用于单选/状态/多选)——固定值,带有颜色,状态类型还可以设置分组/阶段(例如:待办→进行中→已完成);可拖动重新排序。打开属性编辑器时,选项列表会预先填入数据库中已经使用的值,这样你就可以直接为每一项设置颜色,而不必重新输入。
- 删除属性——从数据库中移除列、模式、筛选和排序规则。勾选同时从笔记的Frontmatter中移除(默认开启)还会一并清理源笔记。
行为说明:
- 如果某个属性在部分笔记中缺失,Plainva会提供添加到N个源文件(留空)的选项。
- 对于单选、状态、多选、列表和标签,值中的逗号会拆分为多个条目;在文本类型中,逗号则保持为普通文本。
- 这里同样保护着OKF系统字段
type和okf_version:名称、字段类型和删除都被锁定,okf_version单元格为只读(背景说明见OKF)。
关联
关联可以把笔记彼此链接起来——就像Notion一样,但存储为Frontmatter中完全普通的[[内部链接]](在Obsidian的属性中显示为可点击的链接)。
- 创建:添加一个字段类型为关联的属性。可以选择性地指定目标数据库(.base)——之后选择器只会建议来自该数据库的笔记(留空=任意笔记;此数据库可启用自关联)。数量限制可以设为仅限1个或不限。
- 设置值:选择器会搜索笔记,排除当前条目本身,还可以通过新建关联即时创建一个目标。标注”链接的笔记不存在”的芯片会标记出损坏的链接(目标在Plainva之外被删除或重命名)。
- 反向关联:在”X”上显示选项会在目标数据库中创建一个计算列,反向显示这些关联——它可以直接编辑(编辑会写入建立关联的笔记中)。删除关联也会一并移除其反向列。
- 子项:对于自关联,你可以启用子项——带有父级关联的条目会在表格中以可折叠的方式显示在其父条目下(可正确处理循环引用;关闭时列表保持平铺,值仍会保留)。
- 按关联分组的看板:看板可以按关联分组;在列之间拖动卡片会重写链接。
- 按关联筛选:包含/不包含/为空/不为空,并配有笔记选择器。
- 反向链接同样会计入:Frontmatter中的链接会出现在反向链接面板中,文件重命名会自动更新关联链接。
这篇笔记属于哪里?(数据库上下文)
当你直接打开一个数据库条目时——无论是从文件树、搜索,还是通过[[链接]]——Plainva现在会告诉你它属于什么:
- 笔记上方会显示一行上下文信息:以可点击标签的形式列出笔记所属的数据库(点击即可打开该数据库),如果该数据库使用子项,后面还会跟上
父条目 / 当前笔记这样的路径。如果笔记属于多个数据库,所有数据库都会显示——这一行会自动换行,而不会省略任何一个。 - 在右侧边栏中,数据库分区就是条目检查器:它会按照所属数据库看到的方式来显示这篇笔记——第一个视图的列,按该视图的顺序排列,带有
.base中的类型和选项颜色,并且和表格中一样可编辑。这样一来,无需打开数据库也能更改状态。上方会显示该条目在视图中的位置(12 / 34),并带有跳转到上一条和下一条的箭头。如果笔记属于多个数据库,每个数据库都会各自占一个区块。下方依次是父条目、子项(可折叠),以及通过关联互相关联的条目——每一项都可以点击。 - 只有当笔记确实位于该视图中时,才会显示这个位置:笔记是否属于某个数据库,故意不取决于视图的筛选条件,所以两者完全可能不一致。
- 一旁的属性面板依然有用:它显示的是原始Frontmatter——所有字段,不带数据库的顺序、类型和筛选条件。
- 如果一篇笔记不属于任何数据库,就既不会显示该行,也不会显示该分区。这些信息都不会写入笔记:每次打开笔记时,都会根据你的
.base文件和链接重新计算这个上下文,笔记本身则始终保持为纯粹的Markdown。
创建新条目
左上角的条目按钮(原名新建,与侧边栏的全局新建按钮明确区分)会创建一个新条目:
- 文件名遵循
{数据库名称}_{序号}的模式(空格会变为_);笔记会以匹配的标题开头,并继承数据库的标签来源和简单筛选值,因此会立即出现在视图中。之后会打开预览窗口以便填写内容。 - 存放文件夹:新条目总是会存放到一个指定的文件夹中。如果数据库没有文件夹来源,会有一个对话框引导你一次性创建一个;如果有多个文件夹来源,则只需选择一次。可随时通过按钮的箭头菜单→**更改存放文件夹…**来更改。
- 模板:箭头菜单(模板与存放文件夹)会列出仓库模板文件夹中的模板——可以单次使用,也可以通过设为默认标记为星标(此后每次点击条目都会使用它作为这个数据库的默认模板),或创建新模板(新模板以
# {{title}}标题开头,因此由它创建的条目会以文件名作为一级标题)。同一菜单还提供 打开模板文件夹,可在文件树中显示模板文件夹——模板是普通笔记,你可以在那里编辑、重命名或删除它们。 - 每个数据库的模板:模板可以分配给数据库。默认情况下,箭头菜单只显示分配给此数据库的模板(以及它的默认模板);其余模板可以在显示所有模板(n)中找到。你可以直接在那里分配——每一行的数据库图标会显示分配给此数据库或移除与此数据库的分配——也可以在模板本身上操作:编辑器的**⋮菜单提供目标数据库…,这是一个带搜索框的对话框,你可以在其中把模板分配给任意数量的数据库。通过创建新模板从某个数据库创建的模板,一开始就会分配给该数据库。这项分配以
plainva.templateFor列表的形式保存在模板的Frontmatter中(参见文件格式参考);它绝不会被复制到由该模板创建的条目中,重命名一个.base也会带着这些分配一起变化。斜杠命令插入模板**刻意不做任何筛选——它只是把文本插入到一篇已有笔记中,并没有数据库上下文。 - 模板占位符:模板会插值
{{title}}、{{date}}和{{time}}。当你把模板插入笔记中时(斜杠命令插入模板 /Mod+Alt+T),还会额外解析两个占位符:{{cursor}}标记插入后光标停留的位置;{{prompt:标签}}会向你询问一个值(标注为标签),并插入你的回答。从模板新建笔记时会去掉{{cursor}},并将所有{{prompt:…}}留空。 - 重命名、复制、删除:在任意视图(表格、列表、卡片、看板、日历、时间轴)右键点击条目,可以使用打开、在分栏中打开、重命名…、复制和删除…——删除仍走原来的级联对话框。同样的操作也在浮窗的 ⋮ 菜单中,双击浮窗标题同样可以重命名。如果标题仍与文件名一致(新建
{数据库名}_{序号}条目的初始状态),重命名时标题会一起改;你自己写过的标题永远不会被改动。
便签板(类似 Google Keep 的便签)
便签板视图类型会把数据库中的笔记显示为带有渲染内容的卡片——就像贴满了便签纸的一整块板子。卡片会渲染文本、列表和可点击的复选框(点击即可直接在笔记中勾选任务)、图片以及格式;表格、公式和嵌入内容则会以简化的占位符形式显示。点击卡片会在预览窗口中打开该笔记。
- 快速记录:便签板上方的写个便签…输入框会展开成一个小弹窗,包含一个标题字段和多行笔记正文——就像 Google Keep 一样。如果输入了标题,它会同时成为文件名和笔记的一级标题;不填的话,文件会以时间戳命名,笔记也没有标题。无论哪种情况,输入的文字都会成为笔记正文——不套用模板,不绕弯路(Ctrl/Cmd+Enter 保存)。
- 固定:悬停在卡片上时,右上角会出现固定按钮,点击可将卡片移入已固定分区。
- 排列:拖动卡片即可调整顺序;顺序保存在
.base文件中,并随之一同同步。尚未排列的卡片(刚记录的,或在外部创建的)会显示在最上方,按最新优先排列。如果在配置中设置了排序规则,则以该规则为准——此时拖动排序会被禁用。 - 标签:便签板上方的芯片栏用于筛选卡片——默认按标签筛选,也可切换为某个多选属性(配置 → 标签来源)。选中多个芯片时按AND逻辑组合筛选;这个选择是临时性的,不会写入文件。可以通过卡片右键菜单中的标签来编辑卡片的标签。
- 颜色:右键菜单可以为卡片着色。这个颜色就是笔记的页眉颜色(
plainva.header_color)——它会应用在该笔记出现的所有地方,包括编辑器页眉。 - 属性:在配置 → 属性中勾选的属性会以紧凑的文字行显示在每张卡片底部——日期会遵循该视图的日期格式,空值会被跳过。
- 移动端:在手机上,轻点可打开笔记,长按会显示操作菜单(固定、标签、颜色、删除),长按后拖动可重新排序。提示:将数据库指向你的收件箱文件夹(设置 → 文件夹),这样+快捷新建的笔记以及从其他应用分享过来的文本就会直接出现在便签板上。
关于同步仓库的说明:如果两台设备同时排列便签板,可能会出现一份.base文件的.CONFLICT副本——受影响的只是排列顺序,笔记内容本身绝不会受影响;删除或合并这份副本即可。
日常使用
- 内联编辑:单击某个单元格(或卡片上的某个值)即可直接编辑——在所有视图中都适用。
- 打开:点击条目标题会在预览窗口中打开该笔记——这是一个自由浮动的窗口,可通过标题栏拖动、从边角调整大小。它会为在其中打开的笔记维护自己的后退/前进历史记录,还有一个开关可以显示当前笔记的属性列,并提供作为标签页打开和分屏打开。
Ctrl+点击会直接在分屏中打开;也可以把卡片拖到拖放到此处:分屏打开这个区域。 - 拖动:在拖动卡片时(看板、日历、时间轴),会有一张幽灵卡片跟随鼠标指针。在看板中,你还可以拖动列标题来重新排序列——对于单选/状态看板,这会重新排列该属性的选项(这样各处的下拉菜单也会随之更新);关联看板和自由文本看板则按视图分别记住顺序。
- 列颜色:在看板的视图设置中,列颜色可以让某一列采用其分组的颜色——可以选择整列(整列都会着色)或仅标签(只有表头的标签着色,默认选项)。适用于单选/状态/多选分组。
- 嵌入:数据库可以嵌入到笔记中(斜杠命令嵌入数据库或
@→数据库),并在其中拥有完整功能。 - 关联条目内的自动限定范围:当你把一个数据库嵌入到关联数据库的某个条目中时,它会自动按该条目进行筛选——例如把任务数据库嵌入到某个项目笔记中,你就只会看到该项目的任务。这在两个方向上都适用(嵌入”多”的一侧可以查看指向宿主条目的行;嵌入”一”的一侧则可以查看宿主条目所指向的内容),对于带有父级/子项层级结构的自关联数据库同样适用(将数据库嵌入某个条目中,会以嵌套形式显示该条目的子项)。嵌入视图顶部会有一个小型筛选芯片,显示当前的筛选范围;点击它可以切换关联,或选择显示全部。这个筛选范围不会写入
.base文件,因此同一个数据库在它被嵌入的每个条目中,都会显示各自正确的行。 - 新条目会继承该关联:在这种限定范围的嵌入视图中,使用条目创建的新条目会自动关联到宿主条目(例如在某个项目内嵌的任务列表中新建一个任务,该任务会立即属于这个项目)。在反方向的嵌入中,则是宿主条目会被关联到这个新建条目;如果该单值关联已经有值,则保持不变。
- 显式的”当前笔记”筛选(类似Notion的”此页面”):如果不想仅依赖自动限定范围,你也可以让它变得显式且永久。在配置→筛选中,为某个关联属性添加一条规则,并选择值当前笔记。这样一来,该数据库便会被限定在它所嵌入的那篇笔记范围内——非常适合模板:把任务数据库嵌入到一个项目模板中,由它创建的每个项目都会显示各自的任务。它适用于任何Wiki链接属性,而不仅限于被识别出的关联,并且显式设置的当前笔记筛选优先于自动限定范围。这个筛选条件只存在于Plainva内部(不会作为普通筛选条件写入
.base文件),因此无论是在Obsidian中打开,还是单独打开该数据库,都会显示全部行。
删除有关联的内容(级联删除)
当你删除的内容还有其他条目依赖它时,Plainva会显示一个概览,而不是简单的是/否提问:
- 带有已分配元素的条目(例如某个项目,有任务通过关联指向它):对话框会列出已分配的元素——包括它们各自的子项——按其来源数据库分组,并询问是否同时删除已分配的项目。共享元素(同时分配给其他元素的)默认会被排除,并带有类似”也在’Q3活动’中”的徽章。
- 删除整个数据库:删除
.base时,对话框会询问是否也要一并删除该数据库的所有元素(同时删除所有项目)。同时也是另一个数据库中行的元素默认会被排除。文件夹概览(index.md)和附件始终会保留。 - 关联的数据库:每个通过关联链接的数据库都会得到一张独立的、明确命名的卡片,分两个层级——先只是已分配的元素,可选地再删除整个数据库(文件加上所有元素)。这两个层级默认都是关闭的:未经你明确勾选,关联数据库中不会删除任何内容。
显示项目会打开一个按组划分的列表,每个元素都有一个复选框,方便你保留个别元素。红色按钮会实时计数(“删除15个文件”)。清理引用(默认开启)会从剩余笔记的属性中移除对已删除项的引用;正文中的链接不受影响。超过常见的大批量删除阈值时,还会出现第二次安全确认;在同步处于活动状态时,删除操作也会同步到云端。每个已删除的文件都会保留一个版本快照——可通过恢复已删除的文件找回。如果被设置为默认任务数据库的数据库被删除,Plainva会重置该设置并移除模板分配;Google/Microsoft上的任务不受影响。在手机上,同样的概览会以底部表单形式呈现,带有分组勾选和计数(不支持单个元素的取消勾选)。
示例:一个.base文件长什么样
.base文件是YAML格式——这里是一个简单的项目列表示例:
filters:
and:
- 'file.hasTag("project")'
properties:
note.status:
displayName: Status
plainva:
input: status
options:
- value: open
color: teal
group: Active
- value: done
color: gray
group: Completed
views:
- type: table
name: All projects
- type: table
name: Board
plainva:
render: board
groupBy: status
所有Plainva特有的内容(颜色、看板渲染方式、关联、存放文件夹)都保存在plainva:键下。
直接编辑.base文件(工具与AI)
如果一个脚本或AI助手在不经过Plainva的情况下写入.base文件,有三条硬性规则很关键——违反其中任何一条,Obsidian就会拒绝打开整个文件:
- 只允许顶层键
filters、formulas、properties、views。 永远不要添加其他顶层键;所有Plainva的附加功能都放在嵌套的plainva:子键之下。 - 每个视图都需要一个非空字符串的
name。 - 一个
filters对象在每一层只携带and/or/not中的恰好一个(不能两个并列)。
还有一个容易踩的坑:属性ID在properties:映射以及视图的order/sort中带有note.前缀(note.status),但在筛选表达式内部(status == "Done")以及plainva子键内部(groupBy: status)则是裸键(不带前缀)。
完整的磁盘格式契约——每一个字段、完整的双向关联示例,以及安全编辑的规则——都在文件格式参考中。
那Obsidian呢?
该格式与Obsidian的Bases格式一致;Plainva把自己的扩展功能完全写入plainva:子键中,Obsidian会直接忽略这些内容(“优雅降级”):
- Obsidian可以无错误地打开该文件;看板/日历/时间轴这类Plainva专属视图在那里会显示为普通表格。
- 反向关联列在Obsidian中会显示为空(因为它们是计算得出的);笔记中的关联值在那里会显示为可点击的链接。
- 第一次使用这类扩展功能时,会有一个提示对话框(Plainva扩展功能)说明这一点;可以在设置中通过扩展数据库或警告提示关闭该提示。
另请参阅
- 文件格式参考——面向工具和手动编辑的精确.base磁盘格式契约
- 笔记与Markdown——详细了解属性/Frontmatter
- OKF——统一的
type在实际使用中有什么好处