Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新对象内部的数组_Javascript_Arrays_Json_Node.js_Mongodb - Fatal编程技术网

Javascript 更新对象内部的数组

Javascript 更新对象内部的数组,javascript,arrays,json,node.js,mongodb,Javascript,Arrays,Json,Node.js,Mongodb,我有一个对象在里面,我有一个叫做“timeFrame”的数组,它包含更多的对象。我正在尝试更新我的MongoDB,以便根据新对象更新时间框架数组,这意味着新对象的特定索引中的相同值将在旧数组中 我的目标: var newMsg = { "screensId":[parseInt(screenId)], "name":"msg6", "text":["Won the lottery?","Want to invest your money?","

我有一个对象在里面,我有一个叫做“timeFrame”的数组,它包含更多的对象。我正在尝试更新我的MongoDB,以便根据新对象更新
时间框架
数组,这意味着新对象的特定索引中的相同值将在旧数组中

我的目标:

var newMsg = {  
        "screensId":[parseInt(screenId)],
        "name":"msg6",
        "text":["Won the lottery?","Want to invest your money?","Shulberg investment company","Your money is important to us!"],
        "images":["http://thefilipinoexpat.com/wp-content/uploads/2015/11/04_investment.jpg"],
        "template":"/html/templateA.html",
        "msgTime":5000,
        "timeFrame":[
            { "startDate" : [2016,0,1], "endDate" : [2016,11,31], "days" : [0,1,2,3,4,5,6], "startTime" : 6, "endTime" : 23},
            { "startDate" : [2016,0,1], "endDate" : [2016,11,31], "days" : [5], "startTime" : 13, "endTime" : 20}]  }
我的更新代码:

updateMessage = function(msg) {
    db.collection('messages').update({"name": msg.name},{$set:{msgTime: msg.msgTime,template: msg.template,screensId: msg.screensId,text: msg.text,images: msg.images,timeFrame:msg.timeFrame}},{upsert: false}); 
};
我还尝试了
timeFrame.$
,但效果不好,因为我希望新对象的timeFrame数组中的每个索引都复制到旧索引中

如果有帮助的话,我使用的是MongoDB 2.6版标准

时间范围变更的一个示例:

 "timeFrame":[
            { "startDate" : [2017,1,1], "endDate" : [2018,11,21], "days" : [0,1,2,3,4,5,6], "startTime" : 5, "endTime" : 23},
            { "startDate" : [2016,0,1], "endDate" : [2016,11,31], "days" : [5], "startTime" : 13, "endTime" : 20}]  }
新的:

"timeFrame":[
            { "startDate" : [2016,0,1], "endDate" : [2016,11,31], "days" : [0,1,2,3,4,5,6], "startTime" : 6, "endTime" : 23},
            { "startDate" : [2019,4,25], "endDate" : [2019,11,28], "days" : [5], "startTime" : 8, "endTime" : 20}]  }

恐怕我不明白你的问题。你能给我更新前后对象的例子吗?我刚刚编辑了我的消息,其中有一个更改时间范围的例子。我想要的是使用mongoDBI更新将新对象复制到旧对象上。我仍然不理解“这意味着新对象的特定索引中的相同值将在旧数组中”。当我看你们的例子时,你们只是在推进另一个时间框架并删除最旧的时间框架。但这种被通缉的行为在哪里?那么新的时间框架是在哪里创建的呢?但这正是我想要做的我的意思是,我从浏览器中得到一个json来编辑我然后在数据库中搜索它,然后我想设置新的时间框架(这只是对客户端的编辑)并替换旧的时间框架,但是我怎么能这样做呢??json对象只是函数得到的消息,上面的json对象只是一个示例,所以您会知道它看起来是什么样子的。您正在接收来自用户的更新消息(var newMsg)。您在数据库中搜索此消息,更新第一级上的所有值,从数组中删除第一条记录,并将时间段(从var newMsg)添加到时间段数组中。对吗?