Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
MongoDB: problemas al usar $concat para actualizar el valor de un campo

Estoy tratando de actualizar el valor de un campo en una colección de MongoDB concatenándolo con una cadena literal. Además de esto, el campo es un número entero, y quiero agregar un "0" al frente, para que se convierta en una cadena.

He leído que no puedo usar el valor anterior del campo en una sola instrucción de actualización, así que estoy usando un método forEach() .

Aquí está el código:

 db.col_1.find({"field_1": {$lt: 10000}}).forEach( function(i){ db.col_1.update({_id: i._id}, {$set: { "field_1": {$concat: ["0", i.field_1]}}} ) });

El resultado devuelto es:

 The dollar ($) prefixed field '$concat' in 'field_1.$concat' is not valid for storage.

Estoy seguro de que no estoy escribiendo correctamente el comando $concat, ¿hay alguna forma de hacerlo?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

$concat es una canalización de agregación, no un operador/modificador de actualización.

Parece que lo que estás tratando de hacer se puede lograr haciendo lo siguiente:

 db.col_1 .find({ "field_1": { $lt: 10000 } }) .forEach( function(i) { db.col_1.update( { _id: i._id }, { $set: { "field_1": "0" + i.field_1 } } ) });
over 4 years ago · Santiago Trujillo Denunciar

0

Para actualizar el campo MongoDB utilizando el valor de otro campo para MongoDB versión 4.2 , también se introdujo el operador de etapa de canalización $set, que es un alias para $addFields. Puede usar $set aquí, ya que se relaciona con lo que estamos tratando de lograr.

 let query = { "field_1": { $lt: 10000 } }; let changes = { $set: { "field_1": { "$concat": ["0", "$field_1"] } } }; let UpdatedStatus = await col_1.updateMany(query, [changes]).lean(); console.log(UpdatedStatus);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda