Raj*_*ain 5 java spring mongodb
我正在使用 Java Spring MongoDB API。当我使用 MongoTemplate 并尝试删除一个对象时,它不会删除。我正在使用 Spring 3.0.6.RELEASE。我的代码如下:
\n\nbeans.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}\nRun Code Online (Sandbox Code Playgroud)\n\n我通过 ApplicationContext 获取 mongoTemplate 并调用删除方法,传入由 ID 和年龄填充的 Student 对象,但它不会删除。
\n\n有任何想法吗?
\n\nStudent student = new Student(5);\nstudent.setId(\xe2\x80\x9c \xe2\x80\x9c);\nmongoTemplate.remove(student);\nRun Code Online (Sandbox Code Playgroud)\n\n其中Id是填写的Id。
\n\n没有例外,但是当找到这个Id时它仍然存在。
\n尝试指定集合名称:
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)
| 归档时间: |
|
| 查看次数: |
23683 次 |
| 最近记录: |