es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mongo4.0 Cómo concatenar dos campos existentes en uno en Mongo.

Estoy obligado a usar Mongo4.0.

Tengo un objeto anidado.

{
_id:1,
route:’abc’,
children:[
{
_id:2,
parentRoute:’abc’,
currentRoute:’xyz’,
route:’abc/xyz’
}]
}

Supongamos que para _id:1, si la ruta se actualiza de ‘abc’ a ‘mno’, entonces todos los hijos deben actualizar su parentRoute y ruta.

{
_id:1,
route:’mno’,
children:[
{
_id:2,
parentRoute:’mno’,
currentRoute:’xyz’,
route:’mno/xyz’
}]
}

¡Siéntete libre de sugerir una forma diferente!

Incluso pensé en Regex $replaceOne, pero nuevamente tengo dificultades con la implementación de Mongo4.0.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Usando Mongo 4.0, puedes utilizar el operador $set para actualizar los campos parentRoute y route del objeto anidado. La siguiente consulta actualizará los campos parentRoute y route del objeto anidado cuando la ruta del objeto principal se actualice de abc a mno:

    db.collection.update(
      { _id: 1, route: 'abc' },
      {
        $set: {
          ruta: 'mno',
          'children.$[].parentRoute': 'mno',
          'children.$[].route': 'mno/xyz'
        }
      }
    )
    

    Esto resultará en el siguiente objeto:

    {
      _id: 1,
      route: 'mno',
      children: [
        {
          _id: 2,
          parentRoute: 'mno',
          currentRoute: 'xyz',
          route: 'mno/xyz'
        }
      ]
    }
    

Comments are closed.