【发布时间】:2014-11-21 00:25:06
【问题描述】:
我在我的应用程序中使用 spring data mongodb。它使用 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查询?
【问题讨论】:
-
你不能在mongo shell中使用
{ "_id" : { "$oid" : "542385a91f00bf7dbeae1fc7"}}进行查询,使用{"_id":ObjectId("542385a91f00bf7dbeae1fc7")}。 -
好的。当我执行 SerializationUtils.serializeToJsonSafely(query) 时,这就是它打印的内容。所以如果我必须通过 id 查询,我该怎么做呢?因为 query.addCriteria(Criteria.where("_id").is(new Object(id)));不起作用。它给了我 0 个结果。
-
能否提供文档的插入java代码,或者从mongo shell查询文档的结果?
标签: java mongodb spring-data-mongodb