2017-02-22 60 views
0
Comanda.findOneAndUpdate(id,{$set: {"orden.0.fondos.2.estadoitem": estado}}, {}, function(err, comanda) 

我需要間接地改變「2」

$set: {"orden.0.fondos.2.estadoitem" 

不管我做什麼,我不能..這將拯救我的生活=/..

我已經嘗試了一切,調用var pos = 2;然後$ set:{「orden.0.fondos.pos.estadoitem」也作爲字符串pos =「2」;並且似乎沒有任何工作在advace

感謝

+1

好像你可以做字符串連接,如' 「orden.0.fondos。」 + pos +「.estadoitem」' –

+0

我試過了,它給了我這個Comanda.findOneAndUpdate(id,{$ set:{「orden.0.fondos。」+ pos +「.estadoitem」:estado}},{} ,功能(錯誤,comanda){ ^ SyntaxError:意外的令牌+似乎它不希望在那裏的運營商,如果我把一個變量那裏只是WONT採取值..這是讓我瘋狂 –

回答

0

您可以創建動態$set領域:

var set = { "$set": {} }; 
set.$set["orden.0.fondos." + pos + ".estadoitem"] = estado; 

Comanda.findOneAndUpdate(id, set, {}, function(err, comanda) { 

}) 
+1

你拯救了我的生活,那個作品PERFECT –

0

勳章似乎是一個數組,所以是fondos。

你可以嘗試

var doc = findOne({_id: id}); 
doc.orden[0].fondos[2] = 'anything you want'; 
doc.save((err,result)=>{}) 
+0

是的,他們是數組, fondos是orden裏面很多數組中的一個,生病試試 –