MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Nodejs Mongo-Einfügung in Filialdokument - dynamischer Feldname

Sie müssten Ihr $set aufbauen Modifikator programmgesteuert:

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

Und dann verwenden Sie modifier als dritter Parameter in Ihrem findAndModify anrufen.

Sie können auch in Betracht ziehen, companies zu wechseln ein Array anstelle eines eingebetteten Objekts sein.

Node.js 4.x-Update

Sie können jetzt die berechnete Eigenschaftssyntax verwenden, um dies direkt im Objektliteral zu tun:

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