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
반응형
'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 |