Dovresti costruire il tuo $set
modificatore a livello di codice:
var modifier = { $set: {} };
modifier.$set['companies.' + companyid] = { desksmemberships:[] };
E poi usa modifier
come terzo parametro nel tuo findAndModify
chiama.
Potresti anche prendere in considerazione la possibilità di cambiare companies
essere un array invece di un oggetto incorporato.
Aggiornamento Node.js 4.x
È ora possibile utilizzare la sintassi della proprietà calcolata per eseguire questa operazione direttamente nel valore letterale dell'oggetto:
collection('users').findAndModify(
{username: usern},
[['_id', 'asc']],
{$set:{['companies.' + companyid]: { desksmemberships:[] }}},
{new: true},
function(){...});