-
[MongoDB] 7. 기본 명령어 - replace, updateDB/MongoDB 2022. 9. 29. 03:35728x90반응형
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:{기존이름:바꿀이름}}
$incdb.컬렉션.updateOne({query},{$inc:{필드:양수 or 음수}}) // 양수 덧셈 // 음수 뺄셈
$setdb.컬렉션.updateOne({query},{$set:{바꿀 필드:바꿀 값}})
$pushdb.컬렉션.updateOne({query},{$push:{추가 할 필드 : 값}})
$unset
db.컬렉션.updateOne({query},{$unset: {삭제할 필드:1}}
$pull
db.컬렉션.updateOne({query},{$pull:{필드(배열을 값으로 가진):배열의 요소}}
$nedb.컬렉션.updateOne({필드(배열을 값으로 가진) : {$ne: 비교할 값}},{$수정연산자 : {~}} // 특정 값이 배열에 존재하지 않을 때 해당 값 추가 집합에는 동일한 두 개의 요소가 존재하지 않음. 배열을 집합처럼 처리하는 방법.
$addToSet
$db.컬렉션.updateOne({검사할 필드 : 값},{$addToSet:{추가할 필드 : 필드에 추가될 값}} $ne가 작동하지 않을 때 사용한다. $ne와 동일한 기능을 가졌다.
$pop
db.컬렉션.updateOne({query},{$pop:{1 or -1}}} // 1은 제일 앞 // -1은 제일 뒤
$setOnInsertdb.컬렉션.updateOne({query},{$setOnInsert:{필드 : 값}},{upsert:true}) // 도큐먼트가 생성될 때 필드가 설정되어야하는 경우에 사용함. // 생성 후 갱신에 필드를 갱신하지 않아야 할 때 사용.
upsert 속성- update + insert
- 교체하거나 수정할 도큐먼트가 존재하면 설정된 조건대로 수정, 존재하지 않으면 새로 생성한다.
{upsert:true}
728x90반응형'DB > MongoDB' 카테고리의 다른 글
[MongoDB] 9. 쿼리작성하기 - 연산자로 쿼리하기 (0) 2022.10.05 [MongoDB] 8. 기본 명령어 - $사용법 ,deleteMany(), drop() (0) 2022.09.29 [MongoDB] 6. 기본 명령어 - find() (0) 2022.09.29 [MongoDB] 5. MongoDB 시작 (0) 2022.09.29 [MongoDB] 4. MongoDB 환경 (0) 2022.09.29