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

152
Views
Cómo actualizar una matriz de números en mongoose

No puedo actualizar una matriz dentro de un documento en MongoDB (Mongoose). Aquí está mi definición para un modelo de valores.

 const ticker = new mongoose.Schema({ ticker: String, Price: Number, Amount: Number, PastPrices: [Number] }); export const stock = mongoose.model("Stocks", ticker);

Aquí hay un documento en MongoDB

 { "_id": { "$oid": "61e5d0e1dfda4d7c85dc8fe2" }, "PastPrices": [ 2 ], "ticker": "TSLA", "Price": 2, "Amount": 0, "__v": 0 }

Estoy ejecutando esto en mongoose y PastPrices no se actualiza. Quiero poder ingresar cada pocos segundos en esta matriz y luego representarla en un gráfico

 stock.updateOne({ticker: "TSLA"}, { $push: { PastPrices:1}} );

No recibo ningún error, pero simplemente no se actualiza.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

updateOne devuelve una consulta , que no ejecuta su actualización de inmediato. De la guía Mongoose para Consultas dice:

Una consulta de mangosta se puede ejecutar de dos maneras. Primero, si pasa una función de devolución de llamada, Mongoose ejecutará la consulta de forma asíncrona y pasará los resultados a la devolución de llamada.

Una consulta también tiene una función .then() y, por lo tanto, se puede usar como una promesa.

Lo que significa que puede pasar una función de devolución de llamada como en la documentación para ejecutar Consultas :

 const Person = mongoose.model('Person', yourSchema); // find each person with a last name matching 'Ghost', selecting the `name` and > `occupation` fields Person.findOne({ 'name.last': 'Ghost' }, 'name occupation', function (err, person) { if (err) return handleError(err); // Prints "Space Ghost is a talk show host". console.log('%s %s is a %s.', person.name.first, person.name.last, person.occupation); });

También puede usar then o exec si desea usar Promesas. De la documentación de Mongoose para promesas :

 const query = Band.findOne({name: "Guns N' Roses"}); assert.ok(!(query instanceof Promise)); // A query is not a fully-fledged promise, but it does have a `.then()`. query.then(function(doc) { // use doc }); // `.exec()` gives you a fully-fledged promise const promise = Band.findOne({name: "Guns N' Roses"}).exec(); assert.ok(promise instanceof Promise); promise.then(function (doc) { // use doc });

Si está en un método asíncrono, también puede await la consulta:

 await stock.updateOne({ticker: "TSLA"}, { $push: { PastPrices:1}} );
over 4 years ago · Santiago Trujillo Report

0

Su consulta es correcta, pero para que la consulta devuelva datos actualizados, debe pasar la configuración adicional { new: true } . Si no lo pasa, la consulta actualizará los datos, pero devolverá datos antiguos.

 stock.updateOne( { ticker: "TSLA" }, { $push: { PastPrices:1 } }, { new: true } );
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!