2017-12-30 32 views
0

나는 다음과 같은 구조의 문서 MongoDB를 한 위키 데이터 수집이 : 나는 claims에서 모든 항목을 반복하기 위해 노력하고있어MongoDB 컬렉션에서 트리플 중첩 문서에서 개체를 제거하는 방법은 무엇입니까?

{ 
    id: 178 
    type: "something" 
    claims: { 
     P1{ 
     [0]: { 
      id: "234" 
      obj:{...} 
     } 
     [1]: { 
      id: "456" 
      obj:{} 
     } 
     [2]: { 
      id: "789" 
      obj:{...}   
     } 
     } 
     P2: { 
     [list of objects] 
     } 
     P3: { 
     [list of objects] 
     } 
    } 
} 

(즉, P1, P2, P3)하고 (예를 들어, id:234)

에서 특정 개체를 삭제

즉, id: "234"과 같이 중첩 된 개체를 삭제하는 방법은 무엇입니까?

+0

'db.colletion_name.update ({}, {$ pull : { "claims.P1": {id : "234"}}})'' – Veeram

답변

0

P1 이하, P2P3 필드는 중첩 된 배열입니다.

@veeram이 주석을 달았으므로 $pull 연산자를 사용하는 업데이트 쿼리가이 시나리오에 이상적입니다.

condition = {'id': '234'} 
field_val = {'claims.{}'.format(field): condition for field in ('P1', 'P2', 'P3')} 

db.collection_name.update({}, {$pull: field_val })