MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Nodejs Mongo insere no subdocumento - nome do campo dinâmico


Você teria que construir seu $set modificador programaticamente:
var modifier = { $set: {} };
modifier.$set['companies.' + companyid] = { desksmemberships:[] };

E então use modifier como o terceiro parâmetro em seu findAndModify ligar.

Você também pode considerar alterar as companies para ser uma matriz em vez de um objeto incorporado.

Atualização do Node.js 4.x

Agora você pode usar a sintaxe de propriedade computada para fazer isso diretamente no literal do objeto:
collection('users').findAndModify(
    {username: usern}, 
    [['_id', 'asc']], 
    {$set:{['companies.' + companyid]: { desksmemberships:[] }}},    
    {new: true},
    function(){...});