Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

162
Views
Agrupar matriz de objetos por clave y valores de suma del resultado de agregación de mangosta

Tengo un resultado de consulta de una consulta de agregación de mangosta que necesito seguir procesando o, en el mejor de los casos, hacerlo en la agregación misma.

La agregación se ve así

 result = await TokenBalance.aggregate([ { $match: { $and: [ { ethervalue: { $gte: minBalance } }, { ethervalue: { $lte: maxBalance } } ] } }, { $limit:limit } ])

Esto devuelve una matriz de objetos de este formato.

 { "_id": "61013d6dda7d7c0015af5ccf", "balances": [ { "address": "0x1fc3ddeb035310930a444c0fa59c01618d5902af", "symbol": "HBTC", "balance": 5.21419339e-10, "usdvalue": 0.000020969961637162402 }, { "address": "0x1fc3ddeb035310930a444c0fa59c01618d5902af", "symbol": "NSBT", "balance": 1.258566, "usdvalue": 27.427343477595258 }, { "address": "0x1fc3ddeb035310930a444c0fa59c01618d5902af", "symbol": "CRV", "balance": 517.985955847106, "usdvalue": 806.7017064052314 }, { "address": "0x1fc3ddeb035310930a444c0fa59c01618d5902af", "symbol": "USDT", "balance": 0.003469, "usdvalue": 0.003470159747979122 } ], "address": "0x1fc3ddeb035310930a444c0fa59c01618d5902af", "ethervalue": 0.7604598621232733, "createdAt": "2021-07-28T11:20:13.927Z", "updatedAt": "2021-07-28T11:20:13.927Z", "__v": 0 },

Lo que necesito es que la propiedad "saldos" se procese como agrupada por símbolo y para cada uno de estos símbolos sume los campos de saldo y valor usd.

Preferiría que esto se hiciera en la agregación si es posible, pero parece que no puedo hacerlo bien, ni siquiera en nodos puros.

Quiero que el resultado sea así:

 [ { symbol: USDC, balance: xxx, usdvalue: yyy }, { symbol: USDT, balance: zzz, usdvalue: jjj } ]
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede utilizar el siguiente enfoque,

  • $unwind para deconstruir la matriz de balances
  • $group por symbol y sumar balance y usdvalue
  • $addFields para cambiar el nombre del campo _id a symbol y eliminar el campo _id
 result = await TokenBalance.aggregate([ { $match: { $and: [ { ethervalue: { $gte: minBalance } }, { ethervalue: { $lte: maxBalance } } ] } }, { $unwind: "$balances" }, { $group: { _id: "$balances.symbol", balance: { $sum: "$balances.balance" }, usdvalue: { $sum: "$balances.usdvalue" } } }, { $addFields: { symbol: "$_id", _id: "$$REMOVE" } }, { $limit:limit } ])

Patio de juegos

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!