我一直在尝试更新猫鼬数据,其中包含深层嵌套的对象数组。但是它没有按预期工作。这是我的mongoDB嵌套数组:
{
"_id" : ObjectId("5be1698779d7984c8ed0e987"),
{
"main": [
{
"sub": "dum-one",
"text": "dummy one",
"textKey": "",
"index": "1.0",
"subjects": [
{
"id": "1.1.1",
"text": "Test",
"textKey": "",
"index": "1.1.1",
"type": "checkbox",
"comment": "",
"image": "",
"answer": ""
}
]
},
{
"sub": "category two",
"text": "Test data two",
"textKey": "",
"index": "2.0",
"subjects": [
{
"id": "2.1",
"text": "check test.",
"textKey": "",
"index": "2.1",
"type": "checkbox",
"comment": "",
"image": "",
"answer": ""
}
]
}
]
}
我在前面使用Angular来更改表单值,并且数据来自上面的JSON。但它没有更新,我尝试了很多方法。我的问题是我无法访问确切的查询。这是我尝试过的。
router.post("/edit", (req, res) => {
Template.update({
"main.index": req.body.id,
"main.text": req.body.text,
"main.textKey": "",
}, {
"$set": {
"main.index": req.body.id,
"main.text": req.body.text,
}
}, {
new: true,
upsert: true
}).then(update => {
if (update) {
console.log(update);
res.status(200).json({
message: "value updated"
});
} else {
res.status(500).json({
message: "error occured"
});
}
});
});
现在我知道upsert会创建新的对象ID,但没有它甚至不会创建它。我想同时更改main> text和main> index。
P.S:我已经搜索了stackoverflow和google,但找不到解决方案。
我也在尝试从表单中动态更改。
喜欢:
代替
“ main.text”:“虚拟” 我已经尝试过“ main。$。text,但是它都没有帮助 我想从表单主体获取值
并且我想保持_id不变,这样它就不会创建新数组或至少替换前一个数组