gpt4 book ai didi

node.js - 比较并添加嵌套数组内的两个数组

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:54 25 4
gpt4 key购买 nike

我的文档中有以下数组

  {
items: [
["Tax", 10, 20, 30],
["FX Adjustments", 10, 20, 30],
["Tax", 10, 20, 30],
["FX Adjustments", 10, 20, 30]
]
}

我需要将税收税收结合起来,将外汇调整外汇调整结合起来。

我需要的输出

  {
items: [
["Tax", 20, 40, 60],
["FX Adjustments", 20, 40, 60]
]
}

我尝试过,但没有成功

db.collection.aggregate([
{
$project: {
items: {
$reduce: {
input: "$items",
initialValue: [],
in: {
$cond: [
]
}
}
}
}
}
])

请帮忙解决这个问题

谢谢!!!

最佳答案

您需要以 $unwind 开头然后$group按第一个数组元素 ( $arrayElemAt )。然后你可以运行$reduce就像您尝试过的那样,但由于您的数组是多维的,因此您需要用 $map 将其包装起来来表示索引。要恢复原始数据格式,您可以按 null 分组并使用 $concatArrays将分组 _id 作为第一个数组元素:

db.collection.aggregate([
{
$unwind: "$items"
},
{
$group: {
_id: { $arrayElemAt: [ "$items", 0 ] },
values: { $push: { $slice: [ "$items", 1, { $size: "$items" } ] } }
}
},
{
$project: {
_id: 1,
values: {
$map: {
input: { $range: [ 0, { $size: { $arrayElemAt: [ "$values", 0 ] } } ] },
as: "index",
in: {
$reduce: {
input: "$values",
initialValue: 0,
in: { $add: [ "$$value", { $arrayElemAt: [ "$$this", "$$index" ] } ] }
}
}
}
}
}
},
{
$group: {
_id: null,
items: { $push: { $concatArrays: [ [ "$_id" ], "$values" ] } }
}
}
])

Mongo Playground

关于node.js - 比较并添加嵌套数组内的两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59045407/

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