java - 如何使用spring mongo从嵌套的文档数组中删除元素
问题描述
我有以下类型的文档代表 Mongo DB 中的项目:
{
"_id" : "5f69c22b669f2d3b308ce2e2",
"actions" : [
{
"_id" : "1",
...
},
{
"_id" :"2",
...
},
{
"_id" : "n",
...
},
...
]
}
并且我想通过项目 projectId 的 actionsIds 删除指定的操作。
我尝试了下面的代码:
mongoOperation.updateMulti(
Query.query(Criteria.where("id").is(projectId)),
new Update().pull("actions", Query.query(Criteria.where("id").in(actionIds))),
Project.class
);
但它不会删除任何东西。
请问你能帮帮我吗 ?
谢谢
解决方案
我终于想出了如何做到这一点:
DBObject pullUpdate = BasicDBObjectBuilder.start().add(
"id",
BasicDBObjectBuilder.start().add("$in", actionIds).get()
).get();
mongoOperation.updateMulti(
Query.query(Criteria.where("id").is(projectId)),
new Update().pull("actions", pullUpdate),
Project.class
);
推荐阅读
- spring - Spring Batch RabbitMQ 问题
- php - 如何对具有实时搜索功能的表进行分页?
- python-3.x - 使用带有方法的 python `eval()`
- c# - 使用递归创建一个程序,该程序将数组中的奇数作为特定格式的字符串返回 c#
- python - Python分割线并将其写入文件
- java - 从Java中的国家代码获取默认语言
- java - 如何为特定任务启动一个线程并在 Java 中运行最多 5 秒?
- blazor - Blazor:有条件地显示 RenderFragment 组件
- flutter - Flutter 字体管理
- c# - 如何保持光线投射相对于其绑定的对象?