2014-09-30 59 views
0

Clojure的新手。Clojure - 如何建立一個數據結構,可能增量

我想建立一個數據結構編程插入到數據庫中。我實際上有一些工作得很好,但是它爲每條記錄都插入一個插入,並且我想生成整個記錄,然後用一個插入一次插入整個事物。

這是我迄今爲止的工作:

(doseq [record-data1 [:one :two :three] 
    (doseq [record-data2 [1 2 3]] 
     (insert {record-data1 record-data2}) 

如何插入之前,首先生成整個大宗結構有什麼建議?嘗試過地圖,步行等變化,但還沒有能夠提出任何事情。

謝謝。

+0

你的問題不清楚。你想讓「整個散裝結構」看起來像什麼? – 2014-09-30 19:09:41

+0

哎呦,你是對的。像這樣:({:one 1} {:one 2} {:one 3} {:two 1} ...) – user1992634 2014-09-30 20:18:09

+0

如果您需要添加兩個集合的每個組合,我會關心數據庫設計。應該把表格分解成兩個? – Thumbnail 2014-10-01 10:27:59

回答

1

我不知道我明白你的意思是「整個散裝結構」。您不能將record-data1和record-data2的交叉產品放在同一個字典中。也許你正在尋找:

user=> (for [record-data1 [:a :b :c] record-data2 [1 2 3]] {record-data1 record-data2}) 
({:a 1} {:a 2} {:a 3} {:b 1} {:b 2} {:b 3} {:c 1} {:c 2} {:c 3}) 
+0

我認爲這正是我正在尋找的 - 謝謝。學習一種新語言的挑戰之一就是簡單地學習標準庫中所有可能的功能。點是,我不知道「爲」存在。 – user1992634 2014-09-30 20:19:39

+0

您還可以在'doseq'上使用額外的綁定來獲得'for'所具有的相同擴展行爲(儘管在這種情況下,您不希望因爲您想要單個插入語句)。 – noisesmith 2014-09-30 20:34:44

相關問題