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

Nodejs Mongo insertar en el subdocumento - nombre de campo dinámico

Tendrías que construir tu $set modificador programáticamente:

var modifier = { $set: {} };
modifier.$set['companies.' + companyid] = { desksmemberships:[] };

Y luego usa modifier como el tercer parámetro en su findAndModify llamar.

También puede considerar cambiar companies ser una matriz en lugar de un objeto incrustado.

Actualización de Node.js 4.x

Ahora puede usar la sintaxis de propiedad calculada para hacer esto directamente en el objeto literal:

collection('users').findAndModify(
    {username: usern}, 
    [['_id', 'asc']], 
    {$set:{['companies.' + companyid]: { desksmemberships:[] }}},    
    {new: true},
    function(){...});