我对couchDB和视图的概念相当新,并且减少了,我找不到任何可以帮助我以我希望使用的格式获取数据的内容。
我的数据 - 每一套都是它自己的文件
{
"_id": "2012-10-28",
"scores" : [
{
"bob": 3,
"dole": 5
}
]
}
{
"_id" : "2012-10-29",
"scores" : [
{
"bob": 3,
"dole": 6
}
]
}
我希望view / reduce返回类似的内容:
"bob" : {
"2012-10-27": 3,
"2012-10-28": 3,
...
},
"dole": {
"2012-10-27": 5,
"2012-10-28": 6,
...
}
如果我的源数据无法做到这一点,我可以对其进行重组,但这很难。
非常感谢任何帮助。我还想知道有哪些好的资源可以解释观点的最佳实践并减少。
答案 0 :(得分:0)
除非所有日期都已知,并且你可以在reduce函数中对它们进行硬编码,我认为用map / reduce函数做你需要的东西有点困难。
如果可以输出如下内容:
{
"key": ["bob", "2012-10-27"],
"value": {"score": 3}
}
然后这个map
函数应该有效:
var scoresMapFn = function (doc) {
var scores = doc.scores[0];
for (var k in scores) {
emit([k, doc._id], scores[k]);
}
};
请注意,我认为可以优化原始文档的结构。你有一个分数数组,但它只有一个元素,它是一个对象,它有几个名字/玩家的键。这可以改为:
{
"_id": "2012-10-28",
"scores": [
{
"name": "bob,
"score": 3
},
{
"name": "dole,
"score": 5
}
]
}
这将使操作更容易。
希望这有点帮助。