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

问题描述

我有以下类型的文档代表 Mongo DB 中的项目:

{
    "_id" : "5f69c22b669f2d3b308ce2e2","actions" : [ 
        {
            "_id" : "1",...
        },{
            "_id" :"2",{
            "_id" : "n",...
    ]
}

并且我想通过他们的 actionIds 为项目 projectId 删除指定的操作。

我尝试了下面的代码

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
);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...