Java mongoDB 2.6中的ObjectId不工作

Java mongoDB 2.6中的ObjectId不工作,java,mongodb,spring-data-mongodb,Java,Mongodb,Spring Data Mongodb,我在应用程序中使用SpringDataMongoDB。它使用mongodb 2.6。我想根据mongo在插入期间分配的id查询集合的文档。我在做这样的事情: Query query = new Query(); String id = "542385a91f00bf7dbeae1fc7"; query.addCriteria(Criteria.where("_id").new Object(id)); template.find(query, entity.class); 此查询转换为: {

我在应用程序中使用SpringDataMongoDB。它使用mongodb 2.6。我想根据mongo在插入期间分配的id查询集合的文档。我在做这样的事情:

Query query = new Query();
String id = "542385a91f00bf7dbeae1fc7";
query.addCriteria(Criteria.where("_id").new Object(id));
template.find(query, entity.class);
此查询转换为:

{ "_id" : { "$oid" : "542385a91f00bf7dbeae1fc7"}}
当我在mongo shell上执行相同操作时,会出现一个错误:

错误:{ “$err”:“无法规范化查询:BadValue未知运算符:$oid”, “代码”:17287 }

如何使用spring data mongodb按id查询?

它应该是

new ObjectId(id)

而不是
新对象(id)
。请。

您不能在mongo shell中使用
{“\u id”:{“$oid”:“542385a91f00bf7dbeae1fc7”}
进行查询,使用
{“\u id”:ObjectId(“542385a91f00bf7dbeae1fc7”)
确定。当我执行SerializationUtils.SerializationToJSonSafey(查询)时,它打印的就是这个。所以,如果我必须按id进行查询,我该怎么做?因为query.addCriteria(Criteria.where(“_id”)是(新对象(id));不起作用。它给我的结果是0。您能提供文档的插入java代码,或者从mongo shell查询文档的结果吗?