我正在做一个将 Riak 与 Ripple 结合使用的项目,但我偶然发现了一个问题。出于某种原因,我在链接结构时会出现重复。当我使用 curl 链接 walk 时,我看不到重复项。
我的基于 curl 的链接步行之间的区别
curl -v http://127.0.0.1:8098/riak/users/2306403e5177b4716da9df93b67300824aa2fd0e/_,projects,0/_,tasks,1
和我的基于 rubyipple/riak-client 的链接步行
result = Riak::MapReduce.new(self.robject.bucket.client).
add(self.robject.bucket,self.key).
link(Riak::WalkSpec.new({:key => 'projects'})).
link(Riak::WalkSpec.new({:key => 'tasks', :bucket=>'tasks'})).
map("function(v){ if(!JSON.parse(v.values[0].data).completed) {return [v];} else { return [];} }", {:keep => true}).run
据我所知,最后是地图。
然而,map/reduce 的结果包含多个重复项。我无法理解为什么。现在我已经决定根据密钥删除重复项,但我希望 riak 结果不包含重复项,因为最后删除重复项似乎是浪费。
我尝试了以下方法:
- 确保我的波纹对象的链接集中没有重复项
- 在没有 map reduce 的情况下加载数据,但 link walk 包含重复的键。
任何帮助表示赞赏。