MongoDB는 NoSQL 데이터베이스 입니다. 그중에서도 NoSQL 도큐먼트 데이터베이스 입니다.
MongoDB에서는 아틀라스로 클라우드에 데이터베이스를 설정합니다.
아틀라스 사용자는 클러스터를 배포할 수 있습니다.
인스턴스들의 모임을 클러스터라고 하며 하나의 시스템으로 작동합니다.
단일 클러스터에서 각각의 인스턴스는 동일한 복제본을 가지고있으며 이를 레플리카 세트라고 합니다.
클러스터를 이용하여 배포할 경우 자동으로 레플리카 세트를 생성합니다.
인스턴스 로껄 또는 클라우드에서 특정 소프트웨어를 실행하는 단일 머신, MongoDB에서 데이터베이스
레플리카 동일하 ㄴ데이터를 저장하는 소수의 연결된 머신
클러스터 데이터를 저장하는 서버 그룹으로 여러 대의 컴퓨터를 네트워크를 통해 연결하여 하나의 단일 컴퓨터처럼 동작하도록 제작한 컴퓨터를 뜻함
Document는 객체와 같이 데이터를 필드:값 쌍으로 저장하고 구성합니다.
Documnet에서 필드는 데이터의 고유한 식별자, 값은 주어진 식별자와 관련된 데이터를 뜻합니다.
컬렉션 MongoDB 도큐먼트로 구성된 저장소,
도큐먼트느느 JSON 형식으로 출력됨
JSON은 텍스트 형식이기 때문에 읽기 쉽지만, 파싱이 느리고 메모리 사용이 비효율적
기본 데이터 타입만 지원하기 떄문에 데이터 타입에 제약이 있습니다.
이러한 문제를 해결하기위해 BSON(Binary JSON) 형식 도입
데이터를 가져오거나, 내보내는 경우에 따른 효율적 데이터 형식이 존재
MongoDB의 데이터는 BSON 형태로 저장되고, 보통 읽기 쉬운 JSON 형태로 출력 두 형식의 특징이 다르기 때문
JSON - mongoimport, mongoexport
BSON - mongorestore, mongodump
mongodump --url "<Atlas Cluster URI>"
mongoexport --url "<Atlas Cluster URI>"
--collection=<collection name>
--out=<filename>.json
mongorestore --url "<Atlas Cluster URI>"
--drop dump
mongoimport --url "<Atlas Cluster URI>"
--drop=<filename>.json
insertOne, insertMany는 몽고버젼 3.2 이후에 추가된 명령입니다. 3.2버전 이후에는 insertOne(), insertMany() 명령 사용을 권장합니다.
INSERT 명령을 실행하면, 주어진 도큐먼트 배열의 인덱스 순서로 작업이 실행됩니다. 혹시나 오류가 발생하면 작업은 중단되어집니다.
그러나 ordered를 추가하면, 순서에 상관없이 고유한_id를 가진 도큐먼트는 모두 컬렉션에 삽입됩니다.
같은 데이터가 있으면 덮어쓰고 없다면 INSERT한다
finde({}) : {}중괄호 안에 필드와 해당값을 넣는다면 조건문으로 사용할 수 있습니다.
projection : query 결과 값을 보여줄 때 표시할 필드를 지정하는 것입니다.
- findOne
db.user.update({
query,
update,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
})
db.user.update({'바꿀필드':'바꿀값'}, {'바꿀필드':'바꿔진값'})
update 첫 번째 인자에는 update하고 싶은 필드와 값을 입력하고 두 번째 인자에는 해당 필드에 바꿀 값을 입력한다
db.user.update({'바꿀필드':'바꿀값'}, {$set: {'다른필드': '다른값'}})
바꿀필드에 바꿀 값이 있는지 검색하고, 해당 문서에 다른필드가 있다면 다른값으로 바꾼다. 만약에 다른 필드가 없다면 해당 필드를 추가하게 된다
db.user.update({'바꿀필드':'바꿀값'}, {$unset: {'삭제할필드': '삭제할 값'}})
deleteOne
주어진 기준에 맞는 다수의 도큐먼트 중 첫 번째도큐먼트 하나를 삭제
deleteMany
쿼리문과 일치하는 모든 도큐먼트 삭제
drop
컬렉션 삭제하기위해 drop 이라는 명령어 사용
{<field>:{<operator>:<value>}}
{"$operator":[{<clause1>}, {<clause2>},...]}
$and
는 연산자가 지정되어있지않은 경우에 기본 연산자로 사용됩니다.$expr
을 사용하여 쿼리 내에서 집계 표현식을 사용할 수 있습니다.{<array field>:{"$all":<array>}}
{<array field>:{"$size":<number>}}
https://www.fun-coding.org/mongodb_basic4.html
http://semantics.kr/%EB%AA%BD%EA%B3%A0db%EC%9D%98-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0-update-documents-in-mongodb/
https://jdm.kr/blog/18