ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MongoDB] 7. 기본 명령어 - replace, update
    DB/MongoDB 2022. 9. 29. 03:35
    728x90
    반응형

    var : 재선언 할 수 있는 변수 선언할 수 있다.
    let : 재선언 할 수 없는 변수 선언, vES6의 Javascript에서 권장된다.

    MongoDB에서는 var나 let으로 변수를 선언하여 값을 저장할 수 있다.

    • 변수는 쉘이 종료되면 사라짐.
    • 변수 접근은 '.' 연산자를 사용하여 접근
    // var 변수명 = {필드:값}
    // let 변수명 = {필드:값}
    // 변수명.필드명
    var myVar = {"color":"red"}
    let a = {name: {fname:"Karoid", lname:"Park"}}
    
    a.name.fname
    a.name.lname

    MongoDB의 배열

    • [] 기호안에 정의된다.
    • 사용하는 곳
      • 하나의 필드가 여러 개의 값을 가질 때
      • 여러개의 도큐먼트 삽입(insertMany())
    • 배열의 요소 접근
      • 인덱스로 접근 - 원하는 필드의 인덱스를 알아야함.
    //{필드.index.필드}
    ex) 
    {commenets:[{author:"K",content:"hi"}]}
    db.article.find({"comments.0.author":"K"})
    • 위치 연산자($)를 사용한 접근 - 권장됨.
      • 배열의 위치를 스스로 알아내서 연산 수행
    //{필드.$.필드}
    ex) {"comments.$.author":"Jim"}


    MongoDB의 객체

    • {}안에 있는 것은 무조건 객체이다.
    • "필드 : 값"으로 이루어져있다.


    갱신은 "원자적(all or Nothing)"으로 이루어짐
    갱신은 서버에 먼저 도착한 요청이 적용된 후 다음 요청이 적용(타임 스탬프)

    replaceOne() - document 수정

    • 첫번째 매개변수 : 필터(쿼리)
    • 두번 쨰 매개변수 : 교체할 document
    db.컬렉션.replaceOne(
    	{query},
        {replacement},
        {upsert:Boolean , writeConcern : <document>, collation: <document>}
    )


    updateOne(), updateMany() - document 갱신

    • 첫번째 매개변수 : 필터(쿼리)
    • 두번 쨰 매개변수 : 수정자 document
    • 특정 필드의 값을 바꾸거나 증/감, 필드의 이름을 변경하거나 삭제하는 기능을 수행한다.
    • updateOne은 한개 갱신
    • updateMany는 전체 갱신
    db.collection.updateOne (
    	{ query },
    	{ update },
    	{upsert:Boolean , writeConcern : <document>, collation: <document>, arrayFilters : [...] }
    )
    db.collection.updateMany (
    	{ query },
    	{ update },
    	{upsert:Boolean , writeConcern : <document>, collation: <document>, arrayFilters : [...]}
    )
    • {update} 기술 규칙
      • {$수정 연산자 : {갱신할 필드 : 값}}
    수정연산자 기능
    $rename 필드의 이름 수정
    $inc 숫자 필드의 값을 증가(양수)/감소(음수)
    $set 필드의 값을 수정하거나 생성
    $push 배열 연산자, 이미 존재하면 끝에 요소 추가 없으면 배열 생성
    $unset 필드를 삭제
    $pop 배열에서 요소 제거(처음이나 끝에서 제거 가능)
    $ne 특정 값이 배열에 존재하지 않을 때 해당 값 추가
    $pull 배열에서 값에 따라 제거하기
    $addToSet 기능은 $ne와 동일하나, 배열에 값이 없을 떄 추가
    $setOnInsert 도큐먼트가 생성될 때 필드 값 설정

    $rename

    db.컬렉션.updateOne({Qurey},{$rename:{기존이름:바꿀이름}}


    $inc

    db.컬렉션.updateOne({query},{$inc:{필드:양수 or 음수}})
    // 양수 덧셈
    // 음수 뺄셈


    $set

    db.컬렉션.updateOne({query},{$set:{바꿀 필드:바꿀 값}})


    $push

    db.컬렉션.updateOne({query},{$push:{추가 할 필드 : 값}})


    $unset

    db.컬렉션.updateOne({query},{$unset: {삭제할 필드:1}}

    $pull

    db.컬렉션.updateOne({query},{$pull:{필드(배열을 값으로 가진):배열의 요소}}


    $ne

    db.컬렉션.updateOne({필드(배열을 값으로 가진) : {$ne: 비교할 값}},{$수정연산자 : {~}}
    // 특정 값이 배열에 존재하지 않을 때 해당 값 추가
    집합에는 동일한 두 개의 요소가 존재하지 않음.
    배열을 집합처럼 처리하는 방법.

    $addToSet

    $db.컬렉션.updateOne({검사할 필드 : 값},{$addToSet:{추가할 필드 : 필드에 추가될 값}} 
    $ne가 작동하지 않을 때 사용한다.
    $ne와 동일한 기능을 가졌다.

    $pop

    db.컬렉션.updateOne({query},{$pop:{1 or -1}}}
    // 1은 제일 앞
    // -1은 제일 뒤
     


    $setOnInsert

    db.컬렉션.updateOne({query},{$setOnInsert:{필드 : 값}},{upsert:true})
    // 도큐먼트가 생성될 때 필드가 설정되어야하는 경우에 사용함.
    // 생성 후 갱신에 필드를 갱신하지 않아야 할 때 사용.





    upsert 속성

    • update + insert
    • 교체하거나 수정할 도큐먼트가 존재하면 설정된 조건대로 수정, 존재하지 않으면 새로 생성한다.
    {upsert:true}

    728x90
    반응형

    댓글

Copyright 2022. Pupbani all right reserved