advanced query:统计计算等功能需求

  1. page和block中的property,其值应该能区分时间、数值、字符等类型;
  2. advanced query 提供sum、max 等函数功能,可以对自己标注的property进行统计计算等功能;
  3. 以上功能我还没找到相关帮助文档,如果已开发请发下功能使用介绍文档。ps:query是比较重要的功能,相关文档不是很好懂,内容也不是很系统,可以提升下不?

功能需求:query中的:find 要还可以是property中的某个统计值。

1、Logseq的属性值不做这种类型区分

  • Logseq中property的值没有这种「类型」概念。不像Notion似的,可以选择类型,填Text/Number/Select/Multi-select…
  • 在Logseq中属性值可以填Text,可以填标签# ,可以填[[]]引用一个页面,填(())引用一个块……
  • 但是当用Query查询属性值的时候,它只能查询到两种类型:属性值有标签或[[]]引用 or 属性值没有这些,是Text。即无论属性值填了什么,它在Logseq的数据库中只会以这两种形式来存储。

2、高级查询能实现的效果还是很多的,比如:找出本月过生日的人,随机找出两本没看过的书,一共借给某人多少钱,某个项目的TODO数量……
高级查询可以求和、计数、最大值、平均值、中位数、加减乘除……结合:result-transform:view等还可以实现更多效果。比如查询结果>5,显示:tada:成功,否则显示:x:失败。


3、其实Logseq的官方文档给的挺全的,就是得跳转好多链接 :rofl:

  • 列了一堆链接,给的资源也不错,也分了难易等级,但是确实不系统。列了好几篇入门级的,其实每篇都只说了一部分,而且缺少由易到难的实例(例子普遍太简单,无法满足实际使用中的复杂需求)。
  • 这是Logseq官方文档中关于高级查询的部分:https://docs.logseq.com/#/page/advanced%20queries
    这个页面底部列了十多个链接,可以点开看看。

:thinking: 如何提升?

:green_book: 看文档

  • Logseq官方文档,Datalog官方文档,Clojure官方文档……
  • 一些好心人儿写的相关文档:有教程(大同小异,相似的教程内容,看了一遍又一遍,不怕学不会),有查询语句集锦。

:left_speech_bubble: 逛社区

  • Logseq官方社区(英文):比中文社区热闹点儿,分享和问Query的帖子多些。里面能淘到一些高级查询语句,有从具体使用场景出发的实例。
  • 复制粘贴,自己改这改那,改多了就能明白点儿。

:face_with_monocle: 使用需求是一大动力

  • 边用边学,当下实现不了,就把需求记下来,没准之后学着学着就会写查询语句了。

可以提升,但如果没有计算机语言基础,要变得很会就比较难了。因为那意味着要学会好几种计算机语言。本菜鸟觉得只是用个笔记软件,属实没有那个必要,用什么学什么,够自己用就行:joy:

:star2: 来自菜鸟的推荐:一些学习高级查询的资源

入门 :seedling: Datalog/Intro to Datalog

——看过的这些资源里,最nice的入门教程:

  • 先讲是什么:与Logseq数据库对话的计算机语言称为Datalog……
  • 再一步一步,由浅入深讲解查询语句:从新建一个高级查询开始,逐句解读查询语句。举例多,讲解细致。
  • 这篇有配图,作者还幽默。文末还列举了些实用的玩意儿。

进阶-1:Datolog :potted_plant: Datomic Queries and Rules

  • sum、max、min、count……
  • pull :find 之类的,都在这里啦!

进阶-2:Clojure :palm_tree: Clojure.core

  • 在Logseq官方社区淘来的查询语句,有一些看不懂的东西:比如 * - - > def fn for
    在这篇文档可以找到答案。

:smirk: 一些高级查询语句集锦

  • 一大堆关于TODO的高级查询语句:比如逾期任务。来自Logseq官方社区(英文),由非常热心的好心人儿@Siferiax收集。:arrow_right:戳这里进原帖: Queries for task management
  • 一大堆高级查询语句:覆盖广。比如排序、调试查询代码、:result-transform :view 等等。同样来自好心人儿@Siferiax的收集。:arrow_right:戳这里查看:Logseq/query tests
1 个赞

感谢,对我太有用了。

https://docs.logseq.com/#/page/query%20function/block/functionality

欢迎贡献文档改进:GitHub - logseq/docs: Logseq documentation

B站还有一个「中文」长视频,80多分钟,专门讲Logseq的查询的。由浅入深,讲得比较详细,更系统。这是视频链接: Query 祛魅 | Advanced Queries | Logseq Pro S1E2

这个视频还有配套的文档教程,直接看文档也可以。附文档链接:https://logseq.pro/#/page/query祛魅

这个文档对我挺有帮助的,自己试着写了下例子,不用pull还挺靠谱的,但在用到pull的时候有时会乱显示字段(或者不是想要的),似乎是软件的bug吧,没找到pull的介绍材料,不是很确定。
ps:我已经用obsidian搭建了一套适用于自己的项目管理系统,但管理的颗粒度不够细,logseq中的block似乎可以克服obsidian的不足。但我在试着用logseq搭建项目系统的时候,碰到的问题挺多、找资料也很费精力,需要高手的帮忙,如果您乐意的话,请加微信:17750403599 ,谢谢!

  • Logseq 查询得到的表格有时是会有 bug,但字段显示这个 bug 是可控的。可以自定义这个表格的列名,显示哪些列等。
    :arrow_right: 另一个 bug 是查询结果刷新的问题:更改过查询代码后,有时(很少出现)需要手动刷新一下。刷新方式也很简单,就是把查询代码块折叠/展开一下。所以这个 bug 也无伤大雅。

  • pull 的使用有相关文档。在 Datomic 的官方文档,这一篇 Datomic Queries and Rules中有提及。可以戳这个链接直达 pull 的部分: Pull Expressions

  • 查询出来的结果显示也可以通过查询代码来进行格式化(格式化效果就看编写查询代码的能力了)。比如可以得到一个表格,可以得到一个列表,可以得到一段文字;可以点击结果在右侧边栏打开……


  • 用 Logseq 管理项目也是不错的选择。
    因为 为内容建立联系 的方式很丰富:比如[[]]引用、(())引用、#标签、::属性、自带的特殊属性tags::/alias::、namespace、查询等。

不过也有局限性。毕竟它只是个笔记软件,不是办公软件,公司团队不用。而实际生活中,我们有很多项目其实是与工作相关的,需要团队协作,需要以.doc/ppt/excel等格式输出分享编辑。如果想结合团队协作和管理个人项目,只能用飞书之类的软件了。(在回家后还能喜欢用办公软件的都是狠人 :rofl:

Logseq 在根目录文件夹和文件及附件的管理方面,有很大的不便。导出项目相关的附件也许是个问题。在Logseq官方社区(英文)上面有相关讨论。(优化途径:修改设置里的edn配置、插件、自己写个程序)

  • Logseq 是大纲式笔记,基于块,继承嵌套,颗粒度足够小,可以将块聚焦到窗口。
  • 而且 Logseq 的双链引用更方便,颜值更高。起码没有在被引用的内容右侧加上ID字符,而是显示引用次数。点开可以直接查看「谁引用了我」。在引用和被引用两处,都可以随意编辑修改内容或结构,并且同步。
  • 就是查看双链面板没有 Obsidian 方便, Logseq 的双链面板不能在左右显示。查看的话要么写查询语句,要么滚到页面底部。
    ——我是个菜鸟,在设置中没有找到相关配置。也许有插件可以实现,或者自己写。

  • 我从今年才开始使用 Logseq,不懂编程,是个菜鸟,不是高手,只是用得频繁,喜欢逛社区,算中度使用用户?
  • 最近也在探索用 Logseq 管理个人项目。
  • 另外,最近刚开始折腾 Obsidian,也遇到很多问题。如果您愿意,请通过好友申请,我们可以互相帮助 :handshake: 谢谢!