[英]Query values for more than one entity in a single datomic query (Roam Alpha Api)
我想在單個 datomic/datalog 查詢中獲取與多個實體相關的輸出
例如
在我的數據庫中(通過 RoamAlphaApi 查詢漫游圖)中的一個值( "YjpbFUsTx"
)我可以這樣做:
[:find ?e ?stri :where [?e :block/uid "YjpbFUsTx"][?e :block/string ?stri]]
給我
?e | ?stri |
---|---|
420 | 你好 |
但我想傳遞兩個值"YjpbFUsTx"
和"TgpgOssBM"
給我
?e | ?stri |
---|---|
420 | 你好 |
624 | 完美的 |
我怎么做?
我嘗試了幾種變體,但沒有一個給出任何輸出。
有用的參考: https ://www.zsolt.blog/2021/01/Roam-Data-Structure-Query.html。
您可以將集合傳遞給參數化查詢。 查看文檔: https ://docs.datomic.com/on-prem/best-practices.html#collections-as-inputs
(d/q
'[:find ?e ?stri
:in $ [?uid ...]
:where
[?e :block/uid ?uid]
[?e :block/string ?stri]]
db ["YjpbFUsTx" "TgpgOssBM"])
; =>
#{[420 "Hello"][624 "Perfect"]}
另一方面:我懷疑,您的:block/uid
是唯一標識符? 如果你為屬性設置了:db/unique :db.unique/identity
,你應該在這種情況下使用d/pull-many
:
(d/pull-many db
[:db/id :block/string]
[[:block/uid "YjpbFUsTx"] [:block/uid "TgpgOssBM"]])
; =>
[{:db/id 420
:block/string "Hello"}
{:db/id 624
:block/string "Perfect"}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.