gpt4 book ai didi

couchdb - 与 CouchDB 连接/求和

转载 作者:行者123 更新时间:2023-12-02 17:11:57 28 4
gpt4 key购买 nike

使用CouchDB ,我目前有一个文档代表了一个想法,您可以评价这个想法。每个想法都是一个文档,每个评级都是一个不同的文档。我这样做是为了避免人们在评价一个想法时出现并发访问问题。

我的文档看起来像这样(我已经简化了它们):

一个想法:

{
"_id": "idea1",
"title": "A great idea"
}

评分:

{
"_id": "rating1",
"rating": 1,
"author": "author1"
}

{
"_id": "rating2",
"rating": 1,
"author": "author2"
}

我目前使用reduce函数返回想法id和他/她的评分(评分的简单总和):

map :

function(doc) {
if (doc.type == "rating")
emit(doc.idea_id, doc.rating);
}

减少:

function(keys, values, rereduce) {
return sum(values);
}

我的问题是:我如何将“想法”文档与代表该想法评级的缩减结果“连接”?

最佳答案

map :

function(doc) {
switch (doc.type) {
case "idea": emit(doc._id, ["idea", doc]); break;
case "rating": emit(doc.idea_id, ["rating", doc.rating]); break;
}
}

减少:

function(keys, values, rereduce) {
var i, l, ret = {idea:null, rating:0};

for (i = 0, l = values.length; i < l; ++i) {
switch (values[i][0]) {
case "idea": ret.idea = values[i][1]; break;
case "rating": ret.rating += values[i][1]; break;
}
}

return ret;
}

另一个选择是 use view collation做到这一点。

关于couchdb - 与 CouchDB 连接/求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1950863/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com