簡體   English   中英

在單個 datomic 查詢中查詢多個實體的值 (Roam Alpha Api)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM