我没有收到任何错误或错误,但是使用下面的架构,我似乎无法更新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);
});
答案 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);
});