2014-09-26 4 views
1

내 응용 프로그램에 스프링 데이터 mongodb을 사용하고 있습니다. 그것은 mongodb 2.6을 사용합니다. mongo가 삽입하는 동안 할당 한 id로 컬렉션의 문서를 조회하려고합니다. 나는 이런 식으로 뭔가를하고 있어요 : 어떻게mongoDB의 ObjectId 2.6이 작동하지 않습니다.

error: { "$err" : "Can't canonicalize query: BadValue unknown operator: $oid", "code" : 17287 }

: 나는 몽고 쉘에서 동일한 실행하면

{ "_id" : { "$oid" : "542385a91f00bf7dbeae1fc7"}} 

, 그것은 오류를 제공합니다

Query query = new Query(); 
String id = "542385a91f00bf7dbeae1fc7"; 
query.addCriteria(Criteria.where("_id").new Object(id)); 
template.find(query, entity.class); 

이 쿼리가 번역 나는 스프링 데이터 mongodb를 사용하여 ID로 쿼리합니까?

+0

'{ "_id": ObjectId ("542385a91f00bf7dbeae1fc7")}'을 사용하여 mongo 셸에서'{ "_id": { "$ oid": "542385a91f00bf7dbeae1fc7"}}'로 질의 할 수 없습니다. – Wizard

+0

확인. 내가 SerializationUtils.serializeToJsonSafely (쿼리)를했을 때, 이것이 프린트 된 것입니다. 따라서 ID로 쿼리해야한다면 어떻게해야합니까? 왜냐하면 query.addCriteria (Criteria.where ("_ id").는 (새 Object (id)))입니다. 작동하지 않습니다. 그것은 0 결과를 제공합니다. – coder

+0

문서에 삽입 자바 코드를 제공하거나 mongo shell에서 쿼리 한 문서의 결과를 제공 할 수 있습니까? – Wizard

답변