【发布时间】:2016-11-23 00:07:08
【问题描述】:
我需要更新一个如下所示的 MongoDB 文档:
{
"_id" : ObjectId("A"),
"participant" : "John Doe",
"roles" : [{
"roleId" : ObjectId("AA"),
"responsibilities" : [{
"_id" : ObjectID("AAA"),
"name" : "resp 1"
}, {
"_id" : ObjectID("AAB"),
"name" : "resp 2"
}]
}, {
"roleId" : ObjectId("AB"),
"responsibilities" : []
}]
}
更新有两种形式:
- 删除所有职责为零的角色子文档...这应该删除具有_id = AB的角色子文档
- 如果新角色不存在,则添加:
{ "roleId" : ObjectId("AC"), "responsibilities" : [] }
【问题讨论】:
-
是否进行第二次更新,为您刚刚在第一次更新中删除子文档的文档添加新角色?还是您只对没有零责任子文档的文档应用第二次更新?
-
@devonJS 这两个更新操作将分别执行,彼此无关。有时,我可能需要添加新角色,并且我需要确保该角色不存在。可以将其添加为基于索引的约束,但出于其他原因我仍然需要执行检查。在其他时候,我只想在角色的职责为零时删除角色子文档。
标签: mongodb