2014-06-16 3 views
1

다음과 같이 연락처 번호의 자식 노드가있는 컬렉션이 있습니다.mongodb 자바에서 자식 노드를 제거하십시오.

{"username":"abc", 
"email": "[email protected]", 
"contact":[ 
      {"number":"4763485364","type":"mobile"}, 
      {"number":"4535345345","type":"home"} 
      ]} 

그에게 반복 세트와 나는 제거하거나 MongoDB의 자바 드라이버를 사용하여 유형에 따라 자식 노드의 특정 번호를 변경하는 방법을 알고 싶어요. 컬렉션에서 find 메서드를 사용하여 BasciDBObject를 사용하여 전체 요소를 제거 할 수있었습니다. 하지만 특정 사용자의 하위 노드에서 하나의 숫자 ("집"유형) 만 제거하려고합니다. 누군가가 자바에서 샘플 코드를 어떻게 보여줄 수 있습니까?

답변

2

$ pull을 사용하여 배열에서 항목을 제거 할 수 있습니다.

collection.update(new BasicDBObject("username","abc"), new BasicDBObject("$pull", new BasicDBObject("comments", new BasicDBObject("type","home")))); 

이 코드는 기준 username ="abc" 일치 컬렉션의 항목에서, 기준 type = "home" 일치 comments 배열 요소를 끌어.

희망이 도움이됩니다.

+0

감사합니다. 나는 그것을 시도하고 작동합니다. 그러나 나는 자식 노드를 정렬하고 최상위 요소를 제거 할 수 있는지 여부에 대한 질문이 있습니다. 그 질문에 적합하지 않지만, 그러나 자식 노드에 숫자 값을 가지고 다른 값 집합이 있습니다. 그게 가능하니? – Sutha

+0

예, 그렇습니다. 목록을 검색하고, 정렬하고, 맨 위 요소를 제거한 다음 데이터베이스에서 필요하면 업데이트하십시오. 문제가 해결되면 대답을 받아 들일 수 있습니까? – Priyesh

관련 문제