gpt4 book ai didi

mongodb - 将结果发回 MongoDB 之前的数据处理

转载 作者:可可西里 更新时间:2023-11-01 09:06:05 25 4
gpt4 key购买 nike

我们需要根据一些定义的算法对我们的记录进行排名。我们的 MongoDB 中有 4 个字段,如下所示;

{
"rating" : 3.5
"review" : 4
"revenue" : 100
"used" : 3.9
},
{
"rating" : 1.5
"review" : 2
"revenue" : 10
"used" : 2.1
}

在查询数据时,我们将发送 % 作为计算的权重。因此,假设我们发送 30% 用于评级,30% 用于评论,20% 用于收入和 utthe sed。

现在我们需要根据以下计算对每条记录进行评分。

Score per column = (Existing Value - Average(Column) / StandardDeviation) * %weightage

for rating = (3.5 - 2.5) /1 * 30% = .03

所以我们需要计算每个列(或字段)的分数,而不是所有 4 个字段的总和将为每条记录提供一个分数。

是否可以使用任何 MongoDB 内置函数进行此类计算?

提前致谢

最佳答案

Mongo 具有用于查找标准差($stdDevPop)和查找平均值($avg)的默认运算符,显然也用于减法、乘法和除法。

因此,使用所有这些运算符,您绝对可以根据需要编写聚合。

我已经完成了下面的评分,您可以对其他字段使用相同的逻辑。

此外,将 0.3 替换为您的权重百分比。

db.collection.aggregate([
{
$match: {
rating: {
$ne: null
}
}
},
{
$group: {
_id: null,
ratings: {
$push: "$rating"
},
avg_rating: {
$avg: "$rating"
},
std_deviation_rating: {
$stdDevPop: "$rating"
}
}
},
{
$project: {
ratings: {
$map: {
input: "$ratings",
as: "rating",
in: {
$multiply: [
{
$divide: [
{
$subtract: [
"$$rating",
"$avg_rating"
]
},
"$std_deviation_rating"
]
},
0.3
]
}
}
}
}
}
])

关于mongodb - 将结果发回 MongoDB 之前的数据处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54711843/

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