我有一個看起來像這樣的集合
{
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 需要這樣做。在求和之前,我還需要將字串余額值轉換為數字(我猜是雙精度)。
uj5u.com熱心網友回復:
你非常接近,你只是有一些小的語法錯誤,你應該這樣做:
(要提到的一件事是這需要balance是一個有效的數字字串,否則管道將拋出錯誤)
db.collection.aggregate([
{
$match: {
address: {
$in: addresses
}
}
},
{
$group: {
_id: "$symbol",
sum: {
$sum: {
"$toInt": "$balance"
}
}
}
}
])
蒙戈游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/396465.html
上一篇:屬性減去屬性大于值的聚合
