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

185
Views
El operador MongoDb no funciona para la matriz de propiedades del objeto

Tengo un problema con la consulta de MongoDB . Nuestra colección se llama products y los datos se colocan de esta manera.

 { "_id":"61b823681975ba537915cb0c", "salesInfo":{ "_id":"61b823681975ba537915c23c", "salesDate":[ { "_id":"61b3aa4a7b04b30cd0a76b06", "salesQuantity":100, "soldPieces":36, "holdPieces":0 }, { "_id":"61b3aa4a7b04b30cd0a75506", "salesQuantity":100, "soldPieces":36, "holdPieces":0 } ] } }

Quiero agregar un nuevo field llamado percentageSold vendido dentro de una matriz de objetos, y el valor debe ser el cálculo de la siguiente fórmula ((soldPieces + holdPieces) / salesQuantity * 100) .

Mi consulta es esta, pero devuelve null para la propiedad percentageSold .

 db.products.aggregate( [ { $addFields: { "salesInfo.salesDate.percentageSold": {$divide: [{$add: ["$salesDate.soldPieces", "$salesDate.holdPieces"]}, {$multiply: ["$salesDate.salesQuantity", 100]}]} } } ])
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Como salesInfo.salesDate es un campo de matriz, debe usar un operador de matriz como $map para realizar una operación por elementos.

 db.products.aggregate([ { $addFields: { "salesInfo.salesDate": { "$map": { "input": "$salesInfo.salesDate", "as": "s", "in": { "_id": "$$s._id", "salesQuantity": "$$s.salesQuantity", "soldPieces": "$$s.soldPieces", "holdPieces": "$$s.holdPieces", "percentageSold": { $divide: [ { $add: [ "$$s.soldPieces", "$$s.holdPieces" ] }, { $multiply: [ "$$s.salesQuantity", 100 ] } ] } } } } } } ])

Aquí está el parque infantil de Mongo para su referencia.

over 4 years ago · Santiago Trujillo 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!