2017-02-22 76 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里面很多数组中的一个,生病试试 –