Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

134
Visualizações
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 stock.

 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.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

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}} );
about 4 years ago · Juan Pablo Isaza Relatório

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 } );
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda