2016-08-23 1 views
0

Ich möchte Element zu Unterfunktionen geschachteltes Dokument mit $ Push drücken. aber wenn ich so '' Modules. $. features. $. subFeatures '' es gibt mir die multiple positional operator error. also bekomme ich den Feature-Dokumentindex als x, aber ich kann nicht herausfinden, auf welche Weise ich diesen Wert an die Abfrage anhängen kann. 'modules. $. features.xFeatures' funktioniert nicht.Mungo kann nicht tief zu verschachtelten Dokument mehrere Positionsoperator schieben

var x =2; 

RolePermission.update({ 
    'role': roleID, 
    'modules.name' : data.module, 
    'modules.features.name': data.feature 

}, { 

    $push:{ 
      'modules.$.features.x.subFeatures': { 
       name: data.name, 
       value: false, 
       icon: data.icon 
      } 
      } 

    } 
}, { 
    upsert: true 
}, function (err, event) { 

}); 

Antwort

1

Sie können es auf verschiedene Weise tun:

  1. Verwendung es6:

$push:{ 
 
      [`modules.$.features.${x}.subFeatures`]: { 
 
       name: data.name, 
 
       value: false, 
 
       icon: data.icon 
 
      } 
 
      }

  1. ohne es6 :

var push = {$push: {}}; 
 
push.$push['modules.$.features.' + x + '.subFeatures'] = { 
 
       name: data.name, 
 
       value: false, 
 
       icon: data.icon 
 
      }; 
 
RolePermission.update({ 
 
    'role': roleID, 
 
    'modules.name' : data.module, 
 
    'modules.features.name': data.feature 
 

 
}, 
 
push, 
 
{ 
 
    upsert: true 
 
}, function (err, event) { 
 

 
});

  1. das Dokument finden, es in Code aktualisieren und speichern. Es ist vielleicht ein bisschen langsamer, aber Sie werden solche Probleme nicht haben.
+0

das funktioniert wie ein Charme, Sie haben meine Stunden der Zeit gespeichert. Vielen Dank. –

Verwandte Themen