2013-03-12 6 views
2

저는 Java를 사용하여 mongoDB를 배우기 시작했습니다. 나는 suitename, TESTNAME 및 milestone_id에 복합 키가 몽고Java를 사용하여 mongoDB에서 문서를 업데이트하십시오.

{ 
"_id": { 
    "$oid": "513fa587c5d0cf174eb9b1f8" 
}, 
"suitename": "test_suite_name", 
"testname": "test_name]", 
"milestones": [ 
    { 
     "milestone_id": 45 
    } 
] 
} 

의 다음 문서를 가지고있다. 이 세 가지 필드가있는 파일을 처리해야합니다. ! 나는 = 간단한 DBOBJECT 쿼리를 작성하고 계산 여부를 확인 0

BasicDBObject query = new BasicDBObject(); 
query.put("suitename", testsuite); 
query.put("testname", testcase); 
query.put("milestones.milestone_id", SampleProgram.milestone_id); 

만약 카운트 == 0 -> 몽고에 문서를 추가 ->이

내가 알아 내기 위해 노력하고 무엇을 잘 작동하는 것 같다 is : 내 파일에 새로운 값인 milestone_id가 있으면 기존 문서의 중요 시점 배열에 마일스톤을 추가하기 만하면됩니다. 기존 문서는 suitname 및 testname을 기준으로 결정됩니다.

나는이 작업을 수행 할 수있는 방법 milestone_id = 10, 문서

{ 
"_id": { 
    "$oid": "513fa587c5d0cf174eb9b1f8" 
}, 
"suitename": "test_suite_name", 
"testname": "test_name]", 
"milestones": [ 
    { 
     "milestone_id": 45 
    }, 
    { 
     "milestone_id": 10 
    } 

] 
} 

과 같아야 그렇다면?

감사

답변

4

이 배열 및 방법 update(…) 값 덧붙 $push 연산자로 달성 될 수있다.

BasicDBObject query = new BasicDBObject(); 
query.put("suitename", testsuite); 
query.put("testname", testcase); 

BasicDBObject push = new BasicDBObject(); 
push.put("$push", 
    new BasicDBObject("milestones", 
    new BasicDBObject("milestone_id", SampleProgram.milestone_id))); 

yourCollection.update(query, push); 
+0

잘 작동합니다. put에 대한 API 참조를 어디에서 얻을 수 있는지 말해 줄 수 있습니까? – user2162796

+0

@ user2162796 MongoDB 페이지가 어떻게 든 이상하게 구조화되어 있다는 느낌이 들지만, Java의 다양한 버전에 대한 API 문서 (http://api.mongodb.org/java/index.html)를 찾을 수 있습니다. . 모든 정보는 해당 "언어 센터"에서 찾을 수 있습니다. (왜 내가 페이지의 구조에 좌절하는지 정확하게 표현할 수 없지만, 뭔가가 필요할 때마다 어려움을 겪고 있습니다 ...) – ppeterka

+0

@ user2162796 : 나는 적당한 용어를 알고 있었기 때문에 나는 단지 그것을 봤다. – nutlike

1
BasicDBObject newDocument = new BasicDBObject(); 
newDocument.append("$set", new BasicDBObject().append("clients", 110)); 

BasicDBObject searchQuery = new BasicDBObject().append("hosting", "hostB"); 

collection.update(searchQuery, newDocument); 
+0

답변도 설명해야합니다. –

관련 문제