【问题标题】:Passing parameters to the array updater method {$set: {"parameters": data}}将参数传递给数组更新方法 {$set: {"parameters": data}}
【发布时间】:2017-07-11 21:17:19
【问题描述】:
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";似乎没有任何效果

提前感谢

【问题讨论】:

  • 看来你可以像"orden.0.fondos." + pos + ".estadoitem"中那样进行字符串连接
  • 我试过了,它给了我这个 Comanda.findOneAndUpdate(id,{$set: {"orden.0.fondos." + pos + ".estadoitem": estado}}, {}, function(err, comanda){ ^ SyntaxError: Unexpected token + 似乎它不想要操作员在那里,如果我在那里放一个变量,它就不会取值..这让我发疯了

标签: javascript node.js mongodb mongoose


【解决方案1】:

您可以动态创建$set 字段:

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

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

})

【讨论】:

    【解决方案2】:

    似乎 orden 是一个数组,fondos 也是。

    你可以试试

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

    【讨论】:

    • 是的,它们是数组,fondos 是 orden 中的众多数组之一,我试试看
    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2018-01-24
    • 2016-12-18
    • 2011-07-23
    • 2017-01-05
    相关资源
    最近更新 更多