MongoDB

· MongoDB
배열 연산자 배열을 다루는데 갱신 연산자를 사용할 수 있다. 배열은 일반적이고 강력한 데이터 구조다. 연산자는 리스트에 대한 인덱스를 지정할 수 있을 뿐 아니라 Set처럼 이중으로 쓸 수 있다. 요소 삽입 연산자 $push 연산자 $push는 배열이 이미 존재하면 배열 끝에 요소를 추가하고, 존재하지 않으면 새로운 배열을 생성한다. > db.cars.findOne() { "_id" : ObjectId("628f46057a32d396cf84a7ef"), "name" : "avante", "brand" : "hyundai" } > db.cars.updateOne( { _id: ObjectId("628f46057a32d396cf84a7ef") }, { $push: { options: { HUD: true, ..
· MongoDB
도큐먼트 갱신 도큐먼트 갱신은 원자적으로 이뤄진다. 갱신 요청 두 개가 동시에 발생하면 서버에 먼저 도착한 요청이 적용된 후 다음 요청이 적용된다. 따라서 여러 개의 갱신 요청이 빠르게 발생하더라도 결국 마지막 요청이 안전하게 처리된다. 기본 동작을 원치 않으면 도큐먼트 비저닝 패턴(The Document Versioning pattern)을 이용해야 한다. 도큐먼트를 데이터베이스에 저장한 후에는 updateOne, updateMany, replaceOne과 같은 갱신 메서드를 사용해 변경한다. updateOne updateOne은 필터 도큐먼트를 첫 번째 매개변수로, 변경 사항을 설명하는 수정자 도큐먼트를 두 번째 매개변수로 사용한다. > db.products.find() { "_id" : Object..
· MongoDB
도큐먼트 삽입 insertOne 도큐먼트를 삽입하려면 컬렉션의 insertOne 메서드를 사용한다. > db.loginLogs.insertOne({name: "devbeekei", loginDate: new Date()}) { "acknowledged" : true, "insertedId" : ObjectId("628f19887a32d396cf84a7e7") } > db.loginLogs.findOne({name: "devbeekei"}) { "_id" : ObjectId("628f19887a32d396cf84a7e7"), "name" : "devbeekei", "loginDate" : ISODate("2022-05-26T06:09:12.597Z") } 도큐먼트에 "_id"키가 추가되고 도큐먼트가 몽고D..
· MongoDB
다른 몽고DB 인스턴스에 연결 어떤 몽고DB 인스턴스든 셸을 연결할 수 있다. 다른 장비나 포트에 mongod를 연결하려면 셸을 시작할 때 호스트명, 포트, 데이터베이스를 명시해야 한다. 몽고DB 컨테이너를 하나 더 띄우고 다른 한쪽에서 접속을 해보자. 접속을 위해서는 IP를 확인해야 하므로 컨테이너의 IP를 알아내야 한다. $ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mongodb2 172.17.0.3 mongodb2 컨테이너의 IP는 172.17.0.3이다. 이제 다시 mongodb 컨테이너로 접속해 mongodb2 컨테이너 안에 몽고DB에 접속해보자. 접속할때는 mongo {IP}:{PORT}..
· MongoDB
데이터형 몽고DB는 도큐먼트의 값으로 다양한 데이터형을 지원한다. 기본 데이터형 몽고DB에서 도큐먼트는 자바스크립트 객체와 개념적으로 닮았다는 점에서 JSON과 닮았다라고 생각할 수 있다. JSON은 데이터의 간단한 표현이다. 명세는 한 단락 정도로 설명되며 여섯 가지 데이터형만을 열거한다. 따라서 이해하고, 구문을 분석하고, 기억하기가 쉬워 여러 방면에서 유용하다. 한편으로는 데이터형이 null, 불리언, 숫자, 문자열, 배열, 객체만 지원하기 때문에 JSON의 표현력은 제한적이다. 하지만 JSON은 데이터베이스와 연동할 때는 날짜형이 따로 없어 다루기가 성가시고, 숫자형이 있기는 하지만 한 가지 뿐이다. 부동소수점형(float)과 정수형을 표현하는 방법은 없으며 32비트와 64비트도 구별되지 않는다...
· MongoDB
몽고DB는 명령행에서 몽고DB 인스턴스와 상호작용하는 자바스크립트 셸을 제공한다. 셸은 관리 기능이나, 실행 중인 인스턴스를 점검하거나 간단한 기능을 시험하는데 매우 유용하다. mongo 셸은 몽고DB를 사용하는 데 매우 중요한 도구다. 셸 실행 먼저 몽고DB 컨테이너에 접속한다. $ docker exec -it mongodb bash 정상적으로 접속되었으면 아래 명령어를 통해 셸을 실행한다. $ mongo 위와 같은 문구가 출력됬다면 정상적으로 셸을 실행한 것이다. 셸은 완전한 자바스크립트 해석기이며 임의의 자바스크림트 프로그램을 실행한다. 연산 및 표준 자바스크립트 라이브러리의 모든 기능을 활용할 수 있다. 심지어 함수도 정의하고 호출할 수 도 있다. > x = 200; 200 > x / 4 50 >..
· MongoDB
Docker로 몽고DB 시작하기 먼저 아래 명령어로 몽고DB 이미지를 Pull 받는다. 태그에 버전을 지정하지 않으면 최신 버전을 Pull 받게 된다. $ docker pull mongo 아래 명령어로 정상적으로 몽고DB 이미지를 Pull 받았는지 확인한다. $ docker images 이미지를 Pull 받았으면 몽고DB의 볼륨으로 사용할 디렉터리를 하나 만든다. $ cd ~ $ mkdir mongodb 몽고DB 컨테이너의 볼륨을 로컬 디렉터리와 마운트시키지 않으면 컨테이너를 삭제할 때 컨테이너에 저장되어있는 데이터도 삭제되기 때문에 복구할 수 없다. 그리고 아래 명령어를 통해 몽고DB 이미지를 실행한다. $ docker run --name mongodb -v ~/mongodb:/data/db -d -p..
· MongoDB
몽고DB란? 몽고DB는 강력하고 유연하면 확장성 높은 도큐먼트 지향 데이터베이스다. 관계형 모델로 대용량 데이터 작업을 하게 되면 스키마에 맞게 데이터를 조작해서 작업해야 한다. 몽고DB는 솔루션 자체적으로 분산 처리, 샤딩, 데이터 리밸런싱, 데이터 복제, 복구 등을 지원하고 무엇보다 스키마가 없기 때문에 대용량의 데이터 작업에 아주 효율적인 데이터베이스이다. 도큐먼트 몽고DB의 핵심이자, 기본 단위는 도큐먼트이며, 이는 관계형 데이터베이스의 행과 유사하다. 도큐먼트는 정렬된 키와 연결된 값의 집합으로 이뤄져있다. 도큐먼트 표현 방식은 프로그래밍 언어마다 다르지만 대부분의 언어는 맵(Map), 해시(Hash), 딕셔너리(dictionary)와 같이 도큐먼트를 자연스럽게 표현하는 자료구조를 가진다. {"..
beekei
'MongoDB' 카테고리의 글 목록