使用嵌套数组/对象的Mongoose upsert

时间:2017-07-21 03:47:53

标签: mongodb mongoose

所以我有一个包含它的模型作为其中的一部分。我正在尝试插入按日分类的记录(“2017年7月20日”,“7/21/2017”),然后单独加盖时间戳。

我的问题是你如何在Mongoose中插入不仅推送记录,而且如果需要也创建父/观察

observations : [
    {
        date : {type: Date, default: new Date().toLocaleString().split(',')[0]},
        record : 
        [
            {
              category : String,
              timestamp : {type: Date, default: Date.now()},
            }
        ]
    }
],

这是我当前推送记录的当前更新代码,但我不确定当“日期”的观察不存在时如何使嵌套的upsert工作:

    var todayISO = "7/21/2017"
    var observation = {
        "category": "Diaper",
        "timestamp": todayISO,
    }


Child.findOneAndUpdate({"child.firstName.name": studentName, "child.observations.date": todayISO} , {$push: {"child.observations.$.record": observation}}, {upsert: true, new: true}, function(err,result){
    if(err){
        console.log("error");
        return res.status(500).json({err: "Couldn't append record"});
    }
    else {
        console.log("added");
        return res.json({'record': observation, message: 'Added record under ' + observation.category});
    }
});

这样:

"observations":
[
        {
            date: "2017-07-20T04:00:00.000Z",
            "record":
            [
                {"category":"Diaper",timestamp: "2017-07-06T21:04:30.337Z"}
            ]
        }

当用户尝试在新的一天记录记录时变为此:

"observations":
[

        {
            date: "2017-07-20T04:00:00.000Z",
            "record":
            [
                {"category":"Diaper",timestamp: "2017-07-20T21:04:30.337Z"}
            ]
        },
        {
            date: "2017-07-21T04:00:00.000Z",
            "record":
            [
                {"category":"Nap",timestamp: "2017-07-21T10:04:30.337Z"}
            ]
        }

]

0 个答案:

没有答案