서브 도큐먼트 검색 후 값 변경 시키기
다음과 같이 서브 스키마가 정의되어 있는 부모 스키마가 있다고 가정해보자.
A = { B = [ new Schema({ content: String }) ] }
다음과 같은 query로 B의 unique id를 가진 부모 도큐먼트를 검색할 수 있다.
A.findOneAndUpdate({"B._id": sub_uid})
만약, 찾은 후에 서브 도큐먼트의 값을 변경시키고 싶다면 어떻게 해야할까? 방법이야 많겠지만 내가 찾은 방법은 아래의 방법이다.
A.findOneAndUpdate({"B._id": sub_uid}, {$set: {"B.$.content": content}})
정리
다음의 .$.
을 이용하여 $set 옵션 사용시 해당 필드의 값을 변경할 수 있다. 서브 도큐먼트 없이 부모 도큐먼트 하나로 값을 관리할 수 있다면 좋겠지만, 가끔씩 서브 도큐먼트를 사용해야 할 경우가 생기면 위와 같은 방법을 사용해면 좋겠다.
'IT > Mongodb' 카테고리의 다른 글
도큐먼트 필드 삭제하기 (0) | 2017.12.30 |
---|---|
$elemMatch vs $in (0) | 2017.10.31 |
ISO Date 값이 한국 시간과 다를때 (1) | 2017.10.31 |
스키마 모델링 어떻게 해야 하나 (0) | 2017.10.21 |