logseq/query

基础

query-table:: false
query-properties:: [:title :tags]

  • ``

  • ``

advanced query

  • 获取包含 #Paper 标记笔记中的所有 todo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{{< logseq/orgQUERY >}}{:title [:h2 "Doing"]
:query [:find (pull ?b [*])
:where
[?p :block/name]
; 取page的page-properties
[?p :block/properties ?prop]
; 取page-properties中“publication-title:: value1, value1, value3”的值
; 即: 取出列表“value1, value1, value3”
[(get ?prop :tags) ?v]
[(contains? ?v "Paper")]
[?b :block/page ?p]
[?b :block/marker ?m]
[(= ?m "TODO")]
]
}
{{< / logseq/orgQUERY >}}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{{< logseq/orgQUERY >}}; 以下注释是我查找网上文章结合自己的理解,不一定对
; '?xxx' 表示一个变量
; '$' 表示数据库
; ':xxx' 表示字段和查询关键字
{:title [:h2 "Todo"]
:query [:find (pull ?b [*]) ;找到所有符合条件的条目,'*' 表示条目的所有字段
:in $ ?category ;'?category' 就是通过 'inputs' 传过来的变量
:where
[?b :block/ref-pages ?p] ;条件语句用 '[]' 表示,?p 是什么下面会说明
[?p :block/properties ?pr] ;?p 是包含了 properties 为 ?pr 的页面,?pr 是什么,下面会说明
[(get ?pr :category) ?t] ; get 是获取 object 的属性,并将它设置为 ?t
[(contains? ?t ?category)]; contains?(注意'?'在后面)表示 predict,也就是符合特定条件
(not [?b :block/marker ?m]); not [xxx] 表示对 [xxx] 的结果取反
]
:inputs ["Programming"] ; 传入一个参数
}
{{< / logseq/orgQUERY >}}
+ 找到标记为 TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{{< logseq/orgQUERY >}}{:title [:h2 "Doing"]
:query [:find (pull ?b [*])
:in $ ?category
:where
[?b :block/marker ?m]
[(= ?m "TODO")]
[?b :block/ref-pages ?p]
[?p :block/properties ?pr]
[(get ?pr :category) ?t]
[(contains? ?t ?category)]
]
:inputs ["Programming"]
}
{{< / logseq/orgQUERY >}}

Ref

作者

Ryen Xiang

发布于

2024-10-05

更新于

2024-10-05

许可协议


网络回响

评论