gpt4 book ai didi

mongodb - 使用 MongoDB 聚合计算两个数组之间的点积

转载 作者:可可西里 更新时间:2023-11-01 10:02:03 25 4
gpt4 key购买 nike

我有以下格式的文档:

{
'_id': ObjectId('5a7884437443cfd470893efc'),
'source': [1,2,3,3]
'sink': [5,6,7,8]
}

如何使用聚合管道计算源数组和接收器数组(向量)之间的点积

最佳答案

假设两个数组的长度相同,您可以使用以下聚合:

db.collection.aggregate([
{
$project: {
dotProduct: {
$reduce: {
input: { $range: [ 0, { $size: "$source" }] },
initialValue: 0,
in: { $add: [ "$$value", { $multiply: [ { $arrayElemAt: [ "$source", "$$this" ] }, { $arrayElemAt: [ "$sink", "$$this" ] } ] } ] }
}
}
}
}
])

$range在这种情况下用于生成 4 个元素的数组 (0,1,2,3) 并且这些元素用作 $arrayElemAt 的索引运算符(operator)。 $reduce简单地对返回标量值的特定索引的所有产品求和。 $reduce中使用了两个特殊变量:$$value代表sum而$$this代表$range<生成的索引

关于mongodb - 使用 MongoDB 聚合计算两个数组之间的点积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50394051/

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