我的mongodb架构有一个JSON层次结构。当我从compojure获得字段参数时,哈希是用{"a.b" 1, "a.c" 2, "d.e" 3}
这样的扁平点分表示法。我想使用monger来插入数据,但这需要真正的分层格式,如{:a {:b 1, :c 2}, :d {:e 3}}
。有没有办法自动从一个转换到另一个?
答案 0 :(得分:3)
我所知道的并不是自动的,但手动进行转换非常简单:
=> (require 'clojure.string)
=> (defn nest-keys [x]
(reduce (fn [m [k v]]
(assoc-in m (map keyword (clojure.string/split k #"\.")) v))
{}
x))
=> (nest-keys {"a.b" 1 "a.c" 2 "d.e" 3})
{:d {:e 3}, :a {:c 2, :b 1}}