Notion 问答:数据库如何只显示最近一条更新

这个问题来自我的 Notion 系统课程的读者提问,现在我将回答分享于此。

首先,Notion 的数据库虽然有加载页数限制,但最少也需要有 10 条,因此就不能实现「只显示最后一条」的需求:

Notion 问答:数据库如何只显示最近一条更新插图

因此我们需要借助另一个数据库,以及一些函数公式的帮助。

基本思路如下:

  1. 将数据库 01 中的页面 A1、A2、A3、A4 等页面全部关联到数据库 02 中的页面 B(命名为最后更新条目」
  2. 在数据库 02 中创建一个 Formula 字段
  3. 在 Formula 字段中,用函数找出最后一个更新过的页面

1、创建默认模板

因为数据库 01 中的所有页面都需要关联到数据库 02 中的「最后更新条目」页面上,所以我们可以用默认模板,让这些页面在创建的时候就自动关联:

Notion 问答:数据库如何只显示最近一条更新插图1

两个数据库的关联效果如下图所示:

Notion 问答:数据库如何只显示最近一条更新插图2

使用 Formula 字段进行处理

在数据库 02 中创建一个 Formula 字段,并使用以下函数进行处理

Database 01.map(current.上次编辑时间).sort().reverse().slice(0,1).map(lets( lastTime,current, lastPage,Database 01.find(current.上次编辑时间==lastTime),lastPage ))

函数具体解析如下

  1. prop(“Database 01”) 这个函数用于获取名为 “Database 01” 的数据库中的所有页面。它返回一个包含所有页面的列表。
  2. map(current.prop(“上次编辑时间”)) map 函数用于遍历列表中的每个元素并对其应用某种操作。在这里,它从每个页面中提取 “上次编辑时间” 属性。结果是一个包含所有编辑时间的新列表。
  3. sort() sort 函数用于对列表进行排序。在这里,它将时间列表按照从早到晚的顺序排序。
  4. reverse() reverse 函数用于反转列表的顺序。在这里,它将排好序的时间列表反转,使其变成从最新到最旧的顺序。
  5. slice(0,1) slice 函数用于从列表中提取一部分元素。在这里,它只保留列表的第一个元素,也就是最新的编辑时间。
  6. map(lets(…)) 这里再次使用 map 函数,但这次是与 lets 函数结合使用。lets 函数允许我们在一个表达式中定义和使用临时变量。
    • lastTime,current:将最新的编辑时间赋值给 lastTime 变量。
    • lastPage,prop(“Database 01”).find(current.prop(“上次编辑时间”)==lastTime): 这里使用 find 函数在 “Database 01” 中查找上次编辑时间与 lastTime 相匹配的页面,并将其赋值给 lastPage 变量。
    • lastPage:最后返回这个最新编辑的页面。

函数结果如下

Notion 问答:数据库如何只显示最近一条更新插图3

如果切换到画廊模式,则可以将它嵌入到分栏排版中,获得相对更好看的样式

Notion 问答:数据库如何只显示最近一条更新插图4

如果你希望更系统地了解 Notion Formula 的用法,可以阅读我的课程的这四篇文章:

本站所有文章,除非特别说明或标注,均为本站原创发布。转载本文需附上本文链接,未经授权,禁止大篇幅复制、盗用、采集或发布本站内容至其他网站、书籍等各类媒体平台。

Notion 问答

Notion 问答:如何用函数实现随机回顾

2024-8-19 19:27:20

Notion 问答

Notion 问答:如何用 Notion 数据库制作随机语录

2024-9-15 19:42:55

欢迎订阅我的 Notion 课程

一站式学习,从入门到精通

X