2015-06-21 23 views
2

我試圖更新我的收藏中有這樣的數組:如果我不喜歡這樣與ES6模板字符串MongoDB的對象鍵

var str = "list.0.arr"; 
    db.collection('connect').update({_id: id}, {$push: { `${str}`: item}}); 

這種精確的字符串只是正常:

db.collection('connect').update({_id: id}, {$push: { "list.0.arr": item}}); 

這是爲了表明它的工作原理,但是當我使用第一種解決方案時,它會拋出錯誤Unexpected token

我的問題是,我怎樣才能得到頂級的解決方案作爲對象的關鍵?

回答

2

模板文字不能被用作對象文本鍵。使用一個計算的屬性,而不是:

db.collection('connect').update({_id: id}, {$push: {[str]: item}}); 
//             ^^^^^ 

Using a variable for a key in a JavaScript object literal

+0

見這不起作用。它給出:'SyntaxError:意外的標記['。我懷疑mongo不支持這種語法。 (使用版本2.6.11) – hackel

+0

@hackel:這與MongoDB無關,而與您使用的Node版本無關。有關每個版本支持的功能,請參見http://node.green。 –

0

與串作爲更新用它的密鑰之前,創建更新文件:

var str = "list.0.arr", 
    query = { "_id": id }, 
    update = { "$push": {} }; 
update["$push"][str] = item; 
db.collection('connect').update(query, update);