Java Spring MongoDB 删除

Raj*_*ain 5 java spring mongodb

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

\n\n

beans.xml

\n\n
<mongo:mongo host=\xe2\x80\x9clocalhost\xe2\x80\x9c port=\xe2\x80\x9c27017\xe2\x80\x9c/>\n\n<mongo:db-factory dbname=\xe2\x80\x9cdatabase5\xe2\x80\x9c mongo-ref=\xe2\x80\x9cmongo\xe2\x80\x9c/>\n\n<bean id=\xe2\x80\x9cmongoTemplate\xe2\x80\x9c class=\xe2\x80\x9corg.springframework.data.mongodb.core.MongoTemplate\xe2\x80\x9c>\n<constructor-arg name=\xe2\x80\x9cmongoDbFactory\xe2\x80\x9c ref=\xe2\x80\x9cmongoDbFactory\xe2\x80\x9c/>\n</bean>\n\n@Document\npublic class Student {\n\n@Id\nprivate String id;\n@Field\nprivate int age;\n\npublic Student(int age) {\n    this.age = age;\n}\n\n// getters and setters\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我通过 ApplicationContext 获取 mongoTemplate 并调用删除方法,传入由 ID 和年龄填充的 Student 对象,但它不会删除。

\n\n

有任何想法吗?

\n\n
Student student = new Student(5);\nstudent.setId(\xe2\x80\x9c \xe2\x80\x9c);\nmongoTemplate.remove(student);\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中Id是填写的Id。

\n\n

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

\n

Ant*_*ero 7

尝试指定集合名称:

mongoTemplate.remove(student, "student");
Run Code Online (Sandbox Code Playgroud)

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

mongoTemplate.remove(new Query(Criteria.where("id").is(student.getId())), Student.class);
Run Code Online (Sandbox Code Playgroud)

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

System.out.println(mongoTemplate.getDb().getLastError());
Run Code Online (Sandbox Code Playgroud)

如果对象被删除,您将看到 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}
Run Code Online (Sandbox Code Playgroud)