2016-08-23 16 views
0

我想通過使用$ push將元素推送到子功能嵌套文檔。但是當我使用像這樣的''modules。$。features。$。subFeatures'' 它給了我多位置運算符錯誤。所以我得到的功能文件索引爲X,但我不知道我可以將該值附加到查詢的方式。 'modules。$。features.x.subFeatures'不起作用。貓鼬不能推送到深度嵌套的文件多位置運算符

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) { 

}); 

回答

1

你能做到在幾個方面:

  1. 使用ES6:

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

  • 沒有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) { 
     
    
     
    });

  • 找到該文件,在代碼更新和保存。它可能會慢一點,但你不會有這樣的問題。
  • +0

    這就像一個魅力,你節省了我的時間。謝謝。 –