我试图做一些棘手的事情,但我不确定这是否可行。 这是:
我有一个使用对象处理的用户。 Dispos包含几个月的数组,所以可以
user.dispos: {"02-2015" : [], "05-2015" : [] }
现在,我想对特定月份进行动态更新, 例如,我想只更新user.dispos [" 02-2015"]字段而不是替换整个dispos对象,让[" 05-2015"]保持不变。 现在我试过了:
User.update({ _id: req.body.id },
{ $set: { dispos["02-2015"]: disposOf-02-2015} }, function(error){
if (error) return res.send(500, err);
return res.send(204) });
它不起作用,但你理解我的意思......我想更新某个位置的处置,而不是替换整个属性。 谢谢你的帮助。
通过使用点表示法并将属性名称包装在引号中,它几乎就在那里。我使用变量来设置处置的月份年份。使用$set: { "dispos.monthYear": dispos }
,我得到dispos : { "monthYear" : { "06-2015 : [] ...} }
。好吧,我只是不需要这个" monthYear"等级应该是动态的mont-year名称。在这种情况下,monthYear =" 06-2015"所以我希望dispos : { "06-2015": []...}
不会删除我的其他dispos {"07-2015"}
答案 0 :(得分:1)
您需要事先动态创建06-24 16:20:05.682 D/TestDialogFragment﹕ onConfigurationChanged
06-24 16:20:05.682 D/TestDialogFragment﹕ portrait
06-24 16:20:05.682 D/TestDialogFragment﹕ 504 601
06-24 16:20:05.852 D/TestDialogFragment﹕ onLayoutChange
06-24 16:20:05.852 D/TestDialogFragment﹕ 84 1021
06-24 16:20:08.695 D/TestDialogFragment﹕ onConfigurationChanged
06-24 16:20:08.695 D/TestDialogFragment﹕ landscape
06-24 16:20:08.695 D/TestDialogFragment﹕ 84 1021
06-24 16:20:08.865 D/TestDialogFragment﹕ onLayoutChange
06-24 16:20:08.865 D/TestDialogFragment﹕ 504 601
06-24 16:20:13.550 D/TestDialogFragment﹕ onConfigurationChanged
06-24 16:20:13.550 D/TestDialogFragment﹕ portrait
06-24 16:20:13.550 D/TestDialogFragment﹕ 504 601
对象。
$set
然后在您的查询中使用此var $set = { $set: {} };
$set.$set['dispos.' + monthYear] = dispose;
// $set => { $set: { "dispos.02-2015": "disposOf-02-2015"} }
$set
BTW,你originally came up with可能在future versions of JS中实际工作的内容。