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

¿Cómo $establecer dinámicamente un campo de subdocumento en mongodb?

Me di cuenta de esto.

Esencialmente, debe construir un objeto de 'marcador de posición' del subdocumento que está tratando de actualizar antes de ejecutar la consulta, así:

var projectID = 'JKS78678923SDFD678';

var key = 'Three';
var value = 'Three';

var placeholder = {};
placeholder['options.' + key] = value;

Teams.findAndModify({
    query: {
        projectID:mongojs.ObjectId(projectID)
    },
    update: {
        $set : placeholder
    },
    upsert: true,
    multi: false,
    new: true
},
function(error, result, lastErrorObject){

    console.log(result);

});

Esto actualiza los campos que ya existen y crea el par campo/valor si aún no existía.