mongodb - 如何在 mongoTemplate 上更新多级嵌入数组
问题描述
我使用 spring-data-mongo mongoTemplate 来更新嵌入文档。以下是我的数据模型:
{
"_id":"3KNAM390aENt",
"field":"test001",
"name":"001",
"sort":0,
"embedFields1":{
"_id":"1",
"field":"field1",
"name":"name1",
"limit":1,
"canBeChange":true,
"needAudit":false,
"embedFields2":{
"_id":"22",
"field":"field22",
"name":"name22",
"limit":1,
"canBeChange":true,
"needAudit":false,
"embedFields3":{
"_id":"3",
"field":"field3",
"name":"name3",
"limit":1,
"canBeChange":true,
"needAudit":false,
"embedFields4":{
"_id":"4",
"field":"field4",
"name":"name4",
"limit":1,
"canBeChange":true,
"needAudit":false,
"embedFields5":{
"_id":"5",
"field":"field5",
"name":"name5",
"limit":1,
"canBeChange":true,
"needAudit":false,
"embedFields6":{
"_id":"66",
"field":"field66",
"name":"name66",
"limit":1,
"canBeChange":true,
"needAudit":false
}
}
}
}
}
}
}
我知道如何使用 $ 来更新加工首先 embedFields1 ,但是如何更新嵌入 embedFields2,embedFields3,embedFields4.......?
解决方案
要导航您的结构,您可以使用如下语法:
" firstlevel.secondlevel.thirdlevel
"
这意味着您可以创建一个动态逻辑来创建该字符串并在 mongodb 命令中使用它。
例子
寻找
db.your_collection.find({"embedFields1.embedFields2.embedFields3._id" : "2"})
更新
db.your_collection.update({"embedFields1.embedFields2.embedFields3._id" : "3"} , {$set : {"embedFields1.embedFields2.embedFields3.name" : "test"}})
推荐阅读
- reactjs - 在新组件中传递点击事件的道具
- c# - 使用进度条调用 WPF 调度程序
- c# - C# 在 switch 或其他方式中更改变量类型以移动它
- jakarta-ee - Java EE - 学习资料
- ffmpeg - ffmpeg 创建一个 mp4 流,导致 Firefox 出错
- sql - 如何编写这个 SQL 查询,我想以最简单的方式基于对多个值的排序来提取一个子集?
- asp.net - 如何动态地将链接按钮控件添加到表格单元格
- oracle - Oracle 修改 sys refcursor 并在 PL/SQL 中返回修改后的游标
- c# - Json.Net 将 1 反序列化为 long 类型的对象
- python - 如何为其他 numpy 数组创建一个 numpy 视图数组