2017-06-14 41 views
1

datomic支持子查詢還是可以在查詢中模擬這些子查詢?這基本上是一個:在另一個內部找到:find。datomic中的子查詢支持

我試圖在查詢/數據庫本身而不是在應用程序中執行數據的分析轉換。

+0

你能舉個例子嗎? –

+0

一個SQL例子就像 [select id,len from(select id,length(foo)as len from user)as t;] 所以我可以用內部選擇創建嵌套表並在外部選擇中進行轉換。 – rrevo

+0

您是否使用Peer API或客戶端API? –

回答

2

是的,您可以在Datomic中發出'subquery'。 提供了一個示例here

還值得注意的是,因爲查詢的工作發生在您的對等方(假設您使用Peer API),所以發出兩個單獨的查詢不會有相同的「n + 1問題」懲罰與傳統的RDB。因此,除了子查詢方法之外,您還可以首先發出「內部」查詢,然後將結果作爲參數傳遞給「外部」查詢。

-Marshall

+0

我希望使用單個查詢,而不是來自客戶端的多個查詢調用。 – rrevo

+0

正如答案所示,您可以調用datalog子句中的'datomic.api/q'在外部查詢中創建一個'子查詢'。 – Marshall