更新猫鼬json对象似乎不起作用

时间:2018-10-15 19:19:50

标签: json mongoose nested

我没有收到任何错误或错误,但是使用下面的架构,我似乎无法更新fact1.nested1。

如果不使用嵌套的Json,它可以工作,所以我设法通过使用

来更新nested1
$set: {'nested1': req.body.newNested1}

但是无论我如何尝试按照以下内容进行更新,都不会改变任何内容。我做了一些研究,尝试了大多数解决方案,猫鼬有什么变化吗? 还有其他方法可以在不更改Json中所有其他数据的情况下更新嵌套Json。

var mongooseSchema  = new Schema ({
fact1: {
    type: JSON,
    minlength: 1,
    maxlength: 300,
    required: true,
    default: "emptyType"
}})

    var setObj = {
    $set: {'fact1.nested1' : req.body.newNested1}
  }
    User.FactCheck.findByIdAndUpdate(id,{ 
             setObj}
            , {
                upsert: true,
                'new': true
            }).exec(function(err, doc) {


                if (err) return res.send(500, {
                    error: err
                });

                console.log (doc)
                return res.send(doc);
            });

enter image description here

1 个答案:

答案 0 :(得分:0)

这对我有用,我还按照以下内容修改了架构。我也相信添加不仅仅是setObj的参数(例如(id,setObj,anotherParam))可能是它不起作用的原因,因为这是我最后一次更改。 即使没有错误,也没有其他工作对我有用。

     var mongooseSchema  = new Schema ({
     fact1: {
        nested1: Boolean,
        nested2: String     
     }})


    objForUpdate.fact1 = {}
    objForUpdate.fact1 = {  'nested1' : req.body.newnested1,
      'nested2' : req.body.newnested2}

    User.SCHEMAPLAYER.findByIdAndUpdate(id,setObj
            , {
                upsert: true,
                'new': true
            }).exec(function(err, doc) {


                if (err) return res.send(500, {
                    error: err
                });

                console.log (doc)
                return res.send(doc);
            });