3

我正在使用 Java Spring MongoDB API。当我使用 MongoTemplate 并尝试删除一个对象时,它不会删除。我正在使用 Spring 3.0.6.REALEASE。我的代码如下所示:

豆类.xml

<mongo:mongo host=“localhost“ port=“27017“/>

<mongo:db-factory dbname=“database5“ mongo-ref=“mongo“/>

<bean id=“mongoTemplate“ class=“org.springframework.data.mongodb.core.MongoTemplate“&gt;
<constructor-arg name=“mongoDbFactory“ ref=“mongoDbFactory“/>
</bean>

@Document
public class Student {

@Id
private String id;
@Field
private int age;

public Student(int age) {
    this.age = age;
}

// getters and setters
}

我通过 ApplicationContext 获取 mongoTemplate 并调用传递由 Id 和 age 填充的 Student 对象的 remove 方法,但它没有删除。

有任何想法吗?

Student student = new Student(5);
student.setId(“ “);
mongoTemplate.remove(student);

其中Id是填写的Id。

没有例外,但是当找到这个 Id 时它仍然存在。

4

2 回答 2

4

尝试指定集合名称:

mongoTemplate.remove(student, "student");

或者您也可以尝试使用查询将其删除:

mongoTemplate.remove(new Query(Criteria.where("id").is(student.getId())), Student.class);

此外,要获取有关正在发生的事情的更多信息,请使用 getLastError:

System.out.println(mongoTemplate.getDb().getLastError());

如果对象被删除,您将看到 n:1 如下所示:

{ "serverUsed" : "vmd-eumongoacct-002/172.20.15.15:27017" , **"n" : 1** , "lastOp" : { "$ts" : 1365111932 , "$inc" : 1} , "connectionId" : 305018 , "err" :  null  , "ok" : 1.0}
于 2013-04-04T20:57:26.317 回答
0

尝试关注

1)确保您仅使用来自弹簧数据的注释类。因为,您没有提供完整的代码,所以我看不到您的导入。

import org.springframework.data.annotation.Id
import org.springframework.data.mongodb.core.mapping.Document

2)尝试先保存对象并删除相同的对象。如果此测试有效,那么您的删除也将有效。

mongoTemplate.save(userObj);
System.out.println("saved user id:"+userObj.getId());
mongoTemplate.remove(userObj);
于 2013-10-27T18:08:48.623 回答