gpt4 book ai didi

ruby-on-rails - 在 Mongoid 中链接 map_reduce 调用的正确方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 09:45:48 27 4
gpt4 key购买 nike

我有一个属于用户的元素模型。我正在尝试计算以下哈希:有多少用户的元素计数为 1、2、3 等。我采用的方法是首先生成 {user -> num elements} 的哈希,然后我将其反转使用第二个 map-reduce。

这是我目前所拥有的:

Element.map_reduce(%Q{
emit(this.user_id, 1);
}, %Q{
function(key, values) {
return Array.sum(values);
}
}).out(inline: true).map_reduce(%Q{
if (this.value > 1) {
emit(this.value, this._id);
}
}, %Q{
function(element_count, user_ids) {
return user_ids.length;
}
}).out(inline: true)

这给了我一个“未定义的方法 `map_reduce'”错误。我在文档中找不到答案。任何帮助都会很棒。

最佳答案

我使用聚合而不是 mapreduce 计算哈希,首先按用户分组,然后再次按元素计数分组:

Element.collection.aggregate([
{
"$group" => {
"_id" => "$user_id", "elements_count" => {"$sum" => 1}
}
},
{
"$group" => {
"_id" => "$elements_count", "users_count" => {"$sum" => 1}
}
},
{ "$project" => {
"_id" => 0,
"users_count" => '$users',
"elements_count" => '$_id',
}
}
])

这将返回以下数组:

[
{"users_count"=>3, "elements_count"=>2},
{"users_count"=>4, "elements_count"=>3},
...
]

如果需要,也可以使用 $sort 对其进行排序运算符

关于ruby-on-rails - 在 Mongoid 中链接 map_reduce 调用的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15397754/

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