Saltar al contenido

¿Cómo reemplazo todo un array de subdocumentos en MongoDB?

Te damos el arreglo a esta duda, o por lo menos eso deseamos. Si tienes preguntas puedes dejar un comentario, que sin dudarlo te responderemos

Solución:

Estoy aquí porque vi 5k vistas en esta publicación, estoy agregando algunas cosas que pueden ayudar a otros que buscan la respuesta anterior

 db.collectionName.insertOne(
      'links': [
                 
                     "text" : "XYZ",
                      "url" : "www.xyz.com"
                  
        ]
  );

ahora ejecute esta consulta que ayuda a reemplazar los datos más antiguos

db.collectionName.update(
      
        _id: ObjectId("your object Id")
      , 
      
        $set: 
         
          'links':[ 
                     "text" : "XYZ1",
                     "url" : "www.xyz.com1"
                    ]
         
      );

Creo que tienes que hacer algo como esto:

var newArray = new BSONArray 
    new BSONDocument   "text", "XYZ" ,  "url", "www.xyz.com"  ,
    new BSONDocument   "text", "efg" ,  "url", "www.efg.com"  ,
    new BSONDocument   "text", "ijk" ,  "url", "www.ijk.com"  
;

var update = Update.Set( "links", newArray );

collection.Update( query, update );

O cualquier método que pueda convertir como un BSONValue válido.

Tan equivalente a shell:

 "links" : [  "text" : "abc"  ] 

> db.collection.update(
      ,
       $set: 
           links: [ 
               text: "xyz", url: "something" ,
               text: "zzz", url: "else" 
          ]
      )

>db.collection.find(, _id: 0, links:1 ).pretty()

 "links" : [
            
                    "text" : "xyz",
                    "url" : "something"
            ,
            
                    "text" : "zzz",
                    "url" : "else"
            
    ]

Eso funciona.

Claramente necesita algo más que el código incrustado. Pero espero que eso te ponga en el camino correcto.

valoraciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *