• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

969
Views
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?

about 3 years ago · Santiago Trujillo
2 answers
Answer question

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 } } ) });
about 3 years ago · Santiago Trujillo Report

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);
about 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error