MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Nodejs Mongo inserisce nel documento secondario - nome campo dinamico

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(){...});