java—如何使用spring mongo从嵌套的文档数组中删除元素

flmtquvp  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(582)

我有以下代表mongo db中项目的文档类型:

  1. {
  2. "_id" : "5f69c22b669f2d3b308ce2e2",
  3. "actions" : [
  4. {
  5. "_id" : "1",
  6. ...
  7. },
  8. {
  9. "_id" :"2",
  10. ...
  11. },
  12. {
  13. "_id" : "n",
  14. ...
  15. },
  16. ...
  17. ]
  18. }

我想删除项目projectid中actionsid指定的操作。
我尝试了以下代码:

  1. mongoOperation.updateMulti(
  2. Query.query(Criteria.where("id").is(projectId)),
  3. new Update().pull("actions", Query.query(Criteria.where("id").in(actionIds))),
  4. Project.class
  5. );

但它不会删除任何内容。
你能帮帮我吗?
谢谢您

rqcrx0a6

rqcrx0a61#

我终于想出了办法:

  1. DBObject pullUpdate = BasicDBObjectBuilder.start().add(
  2. "id",
  3. BasicDBObjectBuilder.start().add("$in", actionIds).get()
  4. ).get();
  5. mongoOperation.updateMulti(
  6. Query.query(Criteria.where("id").is(projectId)),
  7. new Update().pull("actions", pullUpdate),
  8. Project.class
  9. );

相关问题