MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Insertion de Nodejs Mongo dans le sous-document - nom de champ dynamique

Vous auriez à construire votre $set modificateur par programmation :

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

Et puis utilisez modifier comme troisième paramètre dans votre findAndModify appeler.

Vous pouvez également envisager de changer de companies être un tableau au lieu d'un objet incorporé.

Mise à jour Node.js 4.x

Vous pouvez maintenant utiliser la syntaxe de la propriété calculée pour le faire directement dans le littéral d'objet :

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