2013-07-21 1 views
2

내가 좋아하는 ID의 설정 :java를 사용하여 ObjectId로 쿼리를 만드는 방법은 무엇입니까?

["51eae104c2e6b6c222ec3432", "51eae104c2e6b6c222ec3432", "51eae104c2e6b6c222ec3432"] 

나는 ID의 집합을 사용하여 모든 문서를 찾을 필요가있다.

BasicDBObject query = new BasicDBObject(); 
    BasicDBList list = new BasicDBList(); 
    ObjectId ob1 = new ObjectId("51eae100c2e6b6c222ec3431"); 
    ObjectId ob2 = new ObjectId("51eae100c2e6b6c222ec3432"); 
    list.add(ob1); 
    list.add(ob2); 
    query.append("_id", new BasicDBObject("$in", list)); 

가 동일하기 때문에

{ "_id" : { "$in" : [ { "$oid" : "51eae100c2e6b6c222ec3431"} , { "$oid" : "51eae100c2e6b6c222ec3432"}]}} 

뭔가를 찾으려면 같이이 쿼리는

{_id:{$in:[ObjectId("51eae100c2e6b6c222ec3431") , ObjectId("51eae104c2e6b6c222ec3432")]}} 

해야합니다 아무것도 찾을 수 없습니다하지만 난에 ObjectId("51eae100c2e6b6c222ec3431")을 만드는 방법을 알고하지 않습니다 Java를 사용하여 목록

+0

[MongoDB Java : Mongo에서 QueryBuilder $를 사용하는 개체를 찾을 때 연산자가 반환되지 않음] (http://stackoverflow.com/questions/11650970/mongodb-java-finding-objects-in-mongo-using-querybuilder -in-operator-returns-n) – WiredPrairie

답변

3

{ "$oid" : "51eae100c2e6b6c222ec3431"}ObjectId("51eae100c2e6b6c222ec3431")과 같습니다. 그냥 다른 형식으로. 다음 몇 가지 다른 문제가있는 쿼리가 문서를 찾는되지 http://docs.mongodb.org/manual/reference/mongodb-extended-json/

경우 (그리고 당신은 그들이 컬렉션에 존재하는 확신) :

는 다른 형식이 페이지를 참조하십시오. 연결하려는 서버와 데이터베이스 및 컬렉션 이름을 먼저 확인합니다.

Rob.

+0

방금 ​​mongo 셸에서이 쿼리 {_id : {$ in : [{ "$ oid": "51ebf50bc2e66fa145dda30"}, { "$ oid": "51ebf510c2e66fa145ddaa31"}}}를 확인했습니다. } – biomaks

+2

"셸 모드"형식은 ObjectId ("51eae100c2e6b6c222ec3431")입니다. Java Driver의 JSON 유틸리티는 ObjectId를 엄격한 형식 { "$ oid": "51eae100c2e6b6c222ec3431"}으로 변환합니다. Java에서 쿼리가 작동합니까? –

+0

예, 자바에서 작동합니다. 고맙습니다. 그러나 쿼리가 반환하는 또 다른 문제는 두 개가 아닌 한 개의 문서 만 반환합니다. – biomaks