json - 更新 mongodb 集合内的 json 对象 : mongoose

标签 json node.js mongodb mongoose

这是名为campaignResponse 的字段之一内的json 对象的结构。

 campaignResponse:
   { prop:
      { summary: 't',
        retailer: '4',
        sent: 't',
        queued: 'f',
        open: 'f',
        spam: 't',
        click: 't',
        blocked: 'f',
        bounce: 'f',
        unsub: 'f',
        To: 'kartooot@gmail.com',
        status: 'clicked',
        subject: '',
        messageid: '20829150339986762',
        From: '',
        details: '',
        date: '2017-04-03T12:51:38' },
     camp2:
      { date: '2017-04-03T12:51:38',
        details: '',
        From: '',
        messageid: '20829150339986762',
        subject: '',
        status: 'clicked',
        To: 'kartooot@gmail.com',
        unsub: 'f',
        bounce: 'f',
        blocked: 'f',
        click: 't',
        spam: 'f',
        open: 't',
        queued: 'f',
        sent: 't',
        retailer: '4',
        summary: 'f' },
     camp1:
      { date: '2017-04-03T12:51:38',
        details: '',
        From: '',
        messageid: '20829150339986762',
        subject: '',
        status: 'clicked',
        To: 'kartooot@gmail.com',
        unsub: 'f',
        bounce: 'f',
        blocked: 'f',
        click: 't',
        spam: 't',
        open: 'f',
        queued: 'f',
        sent: 't',
        retailer: '4',
        summary: 'f' } }

我想更新 Prop ,camp1,camp2。我想通过一个变量传递它。所以在某一时刻variable = camp1 。我想将 CampaignResponse.variable 设置为 obj。但我收到一个语法错误,提示“意外的标记。”。

User.findOneAndUpdate({email: res[i].email},{$set: {campaignSummary: temp, campaignResponse.varialble: obj}},{new: true},function(err ,result2){
                                        if(err)
                                            callback(err);
                                        else{
                                            console.log(result2);
                                            callback(err,result2);
                                        }
                                    })  

请各位帮帮我。甚至建议更好的方法来做到这一点,我们将不胜感激。 谢谢。

最佳答案

抱歉,我错过了关于它是动态的部分......

应该是

var $set = {campaignSummary: temp};
$set["campaignResponse."+varialble] = obj;
User.findOneAndUpdate({email: res[i].email},{$set:$set},{new: true},function(err ,result2){
                                    if(err)
                                        callback(err);
                                    else{
                                        console.log(result2);
                                        callback(err,result2);
                                    }
                                })  

当使用来自变量的键时,您想要的是使用它来连接最终字符串,然后在 [] 语法中使用它以便能够定义正确的属性名称。

关于json - 更新 mongodb 集合内的 json 对象 : mongoose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45276569/

相关文章:

javascript - 创建一个以变量作为字段的 JSON 对象

javascript - getJSON 只响应明文,否则不起作用?

javascript - Node 应用程序无法识别功能

mysql - Sequelize : how to find a Max element

java - 将 JSON 响应与动态键绑定(bind)到 Java 对象

javascript - 如何将一个对象json转换为数组对象json?

javascript - 如何使用 firefox OS 发出 Ajax 请求和响应?

windows - Mocha 需要制作。找不到适用于 Windows 的 make.exe

java - 删除[ "": from mongoDb result using Java

mongodb - 求和不同集合元素中的唯一属性