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.

Cómo cambiar el tipo de campo en un arreglo de string a arreglo en MongoDB y mantener el valor original.

Tengo la base de datos “test” con la colección “testing”. En esa colección tengo un documento con un arreglo llamado “methods” que contiene un objeto 0 (y tal vez muchos más objetos 1, 2, 3, 4…). Dentro de esos objetos tengo un campo de cadena “tool” con la herramienta “xray”. Quiero que el campo de cadena “tool” sea un arreglo de herramientas. Encontré el comando para cambiar el campo de herramienta a un arreglo con:

db.testing.update(
{},
[{ $set: { "methods.tool": ["$methods.tool"] } }],
{ multi: true }
)

Esto funciona pero crea un arreglo extra “0:Array” y no lo quiero.

Quiero que el resultado final sea así:

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede lograr el resultado deseado utilizando el operador $push en lugar de $set. Aquí está el comando modificado:

    db.testing.update(
      {},
      [{ $push: { "methods.tool": "$tools" } }],
      { multi: true }
    )
    

    Este comando agregará el valor especificado en $tools al arreglo existente en lugar de sobrescribirlo con un nuevo arreglo. Esto eliminará la necesidad del “0:Array” que se creó en el comando anterior. El resultado final se verá como en la imagen proporcionada en la pregunta.

Comments are closed.