【发布时间】:2022-01-26 09:23:45
【问题描述】:
我有一个看起来像这样的集合
{
balance: string
symbol: string
address: string
}
我想使用如下聚合查询该集合:
input array addresses[]
查询集合,其中collection.address包含在提供的地址数组和SUM所有按符号分组的余额。
所需的输出应如下所示:
[
{symbol: xy, balance: summedBalanceForThisSymbol},
{symbol: yz, balance: summedBalanceForThisSymbol},
]
我对 mongoDB 比较陌生,这是我所拥有的,根本不起作用。
const pipe = [
{
match: [
{
address: { $in: addresses } //addresses is an array of string values
}
]
},
{
group: {
objectId: "$symbol",
balance: { $sum: "$balance" }
}
}
]
我必须使用 objectId 而不是 _id 因为我使用的 SDK 需要这样做。在求和之前,我还需要将字符串余额值转换为数字(我猜是两倍)。
【问题讨论】:
-
input array addresses[]是什么意思? -
触发查询的函数有一个字符串数组类型的参数。
-
重要的是要分离出与问题无关的任何内容以防止混淆。所以如果我理解你的话你想通过字符串数组过滤吗?也不清楚你到底在哪里挣扎(过滤或分组)
-
我的示例聚合结构应该阐明我打算做什么,我也在最初的帖子中描述了我的目标。