mongodb

brave_chicken·2024년 6월 10일

잇(IT)생 챌린지

목록 보기
67/90

3. 데이터 수정

  • $unset : 명시한 필드를 지운다.

db.컬렉션명.updateMany({조건},{$unset:{msg:1(삭제할 필드)}})

4. 배열에 저장된 임베디드 도큐먼트 작업

db.컬렉션명.updateMany({조건},{변경할내용},{어떤데이터를 수정해야하는지 명시})

db.profile.updateMany({"broadcast.num":"2"}, 
					{$set:{"broadcast.$[변수].actor":XX}},
                    {arrayFilter:[
                    		{"변수.num":"2"}
                            ]})

5. 배열에 임베디드 저장된 도큐먼트에서 조건을 검색

  • 배열 내 특정조건을 만족하는 요소를 조회
  • 배열의 임베디드 도큐먼트 필드를 검색할 때 사용하는 연산자
    $elemMatch

실습

동등값을 이용해서 조회하기

db.profile.find({subject:"spring"})

여러 개의 요소를 비교

//spring mongodb가 있는 도큐먼트
db.profile.find({subject:{$in:["spring","mongodb"]}})
//spring mongodb가 없는 도큐먼트
db.profile.find({subject:{$nin:["spring","mongodb"]}})

배열에 저장된 요소의 갯수를 비교해서 조회 - musiclist의 size가 2개인 도큐먼트를 조회

db.profile.find({"musiclist":{$size:2}})
db.profile.find({"musiclist":{$size:4}})

broadcast에 임베디드로 저장된 도큐먼트의 num속성이 2인 도큐먼트에 배열속성을 저장

  • actor : ["박서준", "최우식","정유미","이서진"]
//처음 조회된 도큐먼트만 변경 - updateOne
db.profile.updateMany({"broadcast.num":"2"},
                         {$set:{"broadcast.$[element].actor":["박서준", "최우식","정유미","이서진"]}},
                         {arrayFilters:[{"element.num":"2"}]})

추가된 필드 삭제하기

db.profile.updateMany({"broadcast.num":"2"},
                         {$unset:{"broadcast.$[element].actor":1}},
                         {arrayFilters:[{"element.num":"2"}]})

//필드삭제
db.emp.updateMany({},{$unset:{msg:1}})
db.emp.find({})

조건을 추가해서 변경하기

db.profile.updateMany({"broadcast.num":"2"},
                         {$set:{"broadcast.$[element].actor":["박서준", "최우식","정유미","이서진"]}},
                         {arrayFilters:[{"element.num":"2", "element.title":"서진이네"}]})

db.profile.find({"addr.addr2":"서초동"})

배열에 저장된 임베디드 도큐먼트에 조건 적용

db.profile.find({"broadcast":{$elemMatch:{
            "rating.max":{$gte:5,$lte:20},
            "title":"서진이네"
            }}},
            {"broadcast":{$elemMatch:{
            "rating.max":{$gte:5,$lte:20}
            }}}
            )

musiclist의 임베디드된 도큐먼트 중 num이 4번인 도큐먼트에 place필드를 추가해보세요

place:["경복궁","유엔사무소","MBC","KBS","SBS"]

db.profile.updateMany({"musiclist.num":"4"},
                         {$set:{"musiclist.$[element].place":["경복궁","유엔사무소","MBC","KBS","SBS"]}},
                         {arrayFilters:[{"element.num":"4"}]})

musiclist에 저장된 도큐먼트에 year가 2021년,2022년,2023년인 음악 조회

filter 연산자는 aggregation(집합 - group by)에서 사용하는 연산자 변수 앞에 $을 추가하기

db.profile.find({"musiclist":{$elemMatch:{
            "year":{$in:["2021","2022","2023"]},
            }}},
            {"musiclist":{
                $filter:{
                  input:"$musiclist",
                  as:"item",
                  cond:{$in:["$$item.year",["2021","2022","2023"]]}
            }}}
            )


db.profile.find({})

본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.

0개의 댓글