CouchDBには、日付とパスを含むドキュメントがいくつかあります。私は(私はおそらくstartkeyとendkeyを使って)パスで検索することができるビューを望んでおり、そのパスについては、ビューが日付が最新のドキュメントを返すようにしたい。最新のアイテムをグループで取得するCouchDBのビュー
私のデータが
{
"path": "abc",
"created_at": "2011-12-03T18:23:49.058Z"
}
{
"path": "abc",
"created_at": "2011-12-03T11:32:42.123Z"
}
{
"path": "cde",
"created_at": "2011-12-06T15:52:34.523Z"
}
私の現在のマップ機能
function(doc) {
var pathArr = doc.path.split(/\/|\\/);
pathArr.splice(0,1);
emit(pathArr, doc);
}
のようにこれはエラーになり機能を減らす
function(keys, values) {
var currTime = -Infinity;
var retDoc;
for (var i = 0, v; v = values[i]; i++) {
var dateInMs = new Date(v.created_at).getTime();
//if this doc has a later than than previously latest date found
if(dateInMs >= currTime)
{
currTime = dateInMs;
retDoc = v;
}
}
return retDoc;
}
を作成するための私の試みをどのように見えるかの小さな例
{"error":"reduce_overflow_error","message":"Reduce output must shrink more rapidly: Current output: ..."}
私はthe Definitive Guideで、あなたがreduce関数から完全なドキュメントを返すことになっていないので、エラーが発生していると読んでいます。これを解決する他の方法はありますか?
私が得ることができるすべてのヘルプに感謝します。
編集:私はちょうど文書の_idを返した後、第2の要求を通じて文書を取得する機能を削減できるように醜いソリューションを考え
。この解決策についてどう思いますか? 良い解決策が見つかった場合は、私は非常に満足しています。