gpt4 book ai didi

javascript - rethinkdb:按 id 分组并返回另一个 attr 上的计数

转载 作者:行者123 更新时间:2023-11-30 17:35:00 24 4
gpt4 key购买 nike

我有一个投票表,其中包含一些条目,例如(id、song_id、user_id 和 vote)..投票可以包含值“喜欢”或“不喜欢”

现在我想创建一个按 song_id 分组的队列,然后返回该组中喜欢和不喜欢值的数量

r.db('songs').table('votes').groupedMapReduce(
function(vote) { return vote('song_id')},
function(vote) { return vote.pluck('vote')},
function(acc, vote) {
return ?????;
/*
** some kind of loop to get all the likes and dislikes
** if vote === 'like' likes++
** if vote === 'dislike' dislikes++
** return {song_id:song_id, likes:likes, dislikes:dislikes}
*/
}
)

希望得到这样的输出:

[
{song_id: 1, likes: 8, dislikes: 3},
{song_id: 2, likes: 2, dislikes: 6},
// and so on
]

最佳答案

我认为这就是您正在寻找的 groupedMapReduce:

r.db('songs').table('votes').groupedMapReduce(
function(vote) { return vote('song_id')},
function(vote) { return r.branch(
vote("vote").eq("like"),
{like: 1, dislike: 0},
{like: 0, dislike: 1}
)},
function(left, right) {
return {
like: left("like").add(right("like")),
dislike: left("dislike").add(right("dislike"))
}
}
)

此外,RethinkDB 的下一个版本(计划在 1-2 周内)将用更好的 group 命令替换 groupedMapReduce

关于javascript - rethinkdb:按 id 分组并返回另一个 attr 上的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22232134/

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