如何使用query来检索本周/月完成工作。

我主要使用 logseq 来做工作笔记。我首先在日记中写入 /TODO 项目,然后在某一天完成它。我想设定某一天做一个小结,如:本周完成任务列表,本月完成任务列表。方面自己做工作总结。
我看到有许多朋友使用检索配置来实现一些功能,是否有介绍 query 语法的 help 文档或其他资料。

:title "🔨 WORK WEEK"
:query [:find (pull ?h [*])
        :in $ ?start ?today
        :where
        [?h :block/marker ?marker]
        [?h :block/page ?p]
        [(>= ?d ?start)]
        [(<= ?d ?today)]
        [(contains? #{"DOING"} ?marker)]]
:inputs [:7d :today]

我使用上边的配置没有任何反应。

你的 ?d 变量没有设置,我看高级query的时间都是从 page/journal-day 来获得的。
[?p :page/journal-day ?d

多谢提醒,好像有点明白这个语法了。我添加了两行

[?p :page/journal? true]
[?p :page/journal-day ?d]

可以显示了,但还不是我想要的。
我想每周5显示本周内完成工作,应该在 where 那里想办法,正在琢磨。

1 个赞

同学习,希望楼主琢磨出来分享一下~!

可以试试:
{{query (todo done) (between last_modified_at -7d today)}}
{{query (todo doing) (between last_modified_at -7d today)}}

2 个赞

里面用来计算时间范围的?d 变量完全没进行配置,另外只包含了doing的todo,其他状态的也没包含。
换我这个试试:

#+BEGIN_QUERY
{:title "📅 Deadline已过期"
:query [:find (pull ?b [*])
:in $ ?start ?end
:where
[?b :block/deadline ?d]
[?b :block/marker ?marker]
[(< ?d ?end)]
[(> ?d ?start)]
[(contains? #{"NOW" "LATER" "DOING" "TODO"} ?marker)]]
:inputs [:today  :7d-after]
:collapsed? false}
#+END_QUERY
1 个赞