sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Mongo puede alterar los datos de la matriz?

Acabo de encontrarme con este problema. No pude encontrar una solución de una llamada, pero encontré una solución de dos llamadas que funciona cuando tiene un valor único en los elementos de su matriz . Usa el $pull comando primero, que elimina elementos de una matriz, y luego $push .

db.soup.update({
    "tester":"tom"
}, {
    $pull: {
        'array': {
            "id": "3"
        }
    }
})
db.soup.update({
    "tester":"tom"
}, {
    $push: {
        'array': {
            "id": "3",
            "letter": "d"
        }
    }
})

Esto debería funcionar cuando el documento no existe, cuando el documento existe pero la entrada en la matriz no existe y cuando la entrada existe.

De nuevo, esto solo funciona si tienes algo, como el id campo en este ejemplo, que debe ser único en todos los elementos de la matriz.