所以我使用javascript“解决”了这个问题,但使用erlang仍然无法做到。这是我的查询
{"inputs":"test",
"query":[{"map":{"language":"javascript",
"source":"function(value, keyData, arg){ var data = Riak.mapValuesJson(value)[0]; var obj = {}; obj[data.order] = data; return [ obj ];}"}},
{"reduce":{"language":"javascript",
"source":"function(values, arg){ return [ values.reduce(function(acc, item){ for(var order in item){ acc[order] = item[order]; } return acc; }) ];}",
"keep":true}}
]
}
所以在映射阶段,我所做的就是创建一个新数组 obj,其中键作为顺序,值作为数据本身。所以视觉上,obj是这样的
{"1":{"firstName":"John","order":1}
在减少阶段,我只是把它放在累加器中,所以如果你考虑一下,基本上就是这样,因为当你完成后,一切都会为你安排好。所以我放了 2 个 json 文档进行测试,一个在上面,另一个只是名字:Billie,订单 2。这是我上面查询的结果
[{"1":{"firstName":"John","order":1},"2":{"firstName":"Billie","order":2}}]
所以它有效!. 但我仍然需要在 ERLANG 中这样做,有什么见解吗?