我想这个问题符合入门级 clojure 问题。我基本上无法多次处理 clojure 映射并提取不同类型的数据。
给定这样的地图,我试图根据多个嵌套键计算条目:
[
{
"a": "X",
"b": "M",
"c": 188
},
{
"a": "Y",
"b": "M",
"c": 165
},
{
"a": "Y",
"b": "M",
"c": 313
},
{
"a": "Y",
"b": "P",
"c": 188
}
]
首先,我想按 a-key 值对条目进行分组:
{
"X" : [
{
"b": "M",
"c": 188
}
],
"Y" : [
{
"b": "M",
"c": 165
},
{
"b": "M",
"c": 313
},
{
"b": "P",
"c": 188
}
]
}
其次,我想假设 b-keys 的值是重复的,并忽略其余的键:
{
"X" : [
{
"b": "M"
}
],
"Y" : [
{
"b": "M"
}
{
"b": "P"
}
]
}
然后,简单地计算 b-key 的所有实例:
{
"X" : 1,
"Y" : 2
}
当我通过 monger 获取数据时,我定义了:
(defn db-query
([coll-name]
(with-open [conn (mg/connect)]
(doall (mc/find-maps (mg/get-db conn db-name) coll-name))))
然后遇到障碍:
(defn get-sums [request]
(->> (db-query "data")
(group-by :a)
(into {})
keys))
我怎么能从这里继续?