본문 바로가기
반응형

데이터베이스/MongoDB31

[MongoDB] 몽고DB Dump & Restore (Backup) Dump 서비스할 웹사이트의 데이터베이스는 DBNAME이며 접근을 위한 uri와 password를 설정파일(.yaml)로 미리 작성한다.uri에는 엔드포인드와 username, db명이 포함된다. (mongoDB uri string Path) password의 경우 !로 끝날경우 uri에 포함될 시 파싱에러가 발생하여 별도로 분리해야한다. uri: uri: "mongoDB주소(mongodb://id:pathword@ ~ / db명 ? replicaSet = ..)" password: "mongoDB비밀번호" 웹사이트의 db로부터 백업을 받을 때 다음의 명령어를 이용한다. mongodump --config="YAML파일 이름".yaml --forceTableScan Restore 설정파일 ("YAML파일 .. 2023. 4. 4.
[MongoDB] 인덱스 교차 (Index Interserction) [MongoDB] 인덱스 교차 (인덱스 접두사 교차, 인덱스 교차 및 정렬, 인덱스 교차 및 복합 인덱스) 인덱스 교차(Intersection)란? 인덱스 교차는 MongoDB 2.6부터 제공한다. 이 용어는 인덱스의 종류가 아니라 인덱스의 작동 방식을 지칭한다. 지금까지 알아본 ‘단일 인덱스’와 ‘컴파운드 인덱스’를 하나의 컬렉션 내에서 별개로 지정하더라도 쿼리가 구동 될 때에는 내부에서 교집합처럼 동작하여 성능을 높힌다. 다음과 같이 단일 인덱스 두 가지를 선언해준다. db.collection.createIndex({ qty: 1 }) db.collection.createIndex({ item: 1 }) 단일 인덱스가 별개로 두 개를 정의했다. db.orders.find({ item: 'abc123'.. 2023. 3. 20.
[MongoDB] 접두사 인덱스, 등치 (Index Prefix, Equality)란? [MongoDB] 접두사 인덱스, 동치 상태 (Index Prefix, Equality State)란? 인덱스 Prefix란? MongoDB의 인덱스 관련 메뉴얼을 읽다 보면 자주 나오는 용어 중에 Index Prefix라는 말이 있다. 접두사 인덱스 / 선행 인덱스 / 앞쪽 인덱스 해석하면 약간 어색해진다. 일단 아래 예제 코드로 살펴보자. db.collection.createIndex({ a: 1, b: 1, c: 1 }) { a: 1 } { a: 1, b: 1 } { a: 1, b: 1, c: 1 } 정의 된 인덱스의 앞 쪽부터 포함하는 부분집합의 인덱스들을 인덱스 Prefix라고 말한다. 컴파운드 인덱스는 첫 번째 인덱스는 단일 인덱스처럼 일렬로 나열되어 있다. 두 번째 인덱스는 동일한 첫 번째 .. 2023. 3. 20.
[MongoDB] 인덱스 검색, 인덱스 정렬 방식에 따른 검색속도 차이 [MongoDB] 인덱스 검색, 인덱스 정렬 방식에 따른 검색 및 정렬 빠르게 하는 방법 각 명령어의 출력시간은 explain.executionStats를 사용하여 실행속도를 확인하였다.2023.03.06 - [데이터베이스/MongoDB] - [MongoDB] 빠른 탐색을 위한 인덱싱(indexing) [MongoDB] 빠른 탐색을 위한 인덱싱(indexing)NestJS(typegoose)에서 MongoDB를 빠르게 탐색하기 위해 인덱스를 사용하는 방법, explain.executionStats를 사용하여 실행속도 확인 아래와 같이 십만개(100,000)의 더미 유저 데이터가 있다. 데이터의 형식은 1kfdd6630.tistory.com 1. 인덱스 순서와 검색에 있어서 검색은 정렬에 비해 인덱스 순서.. 2023. 3. 20.
[MongoDB] Single Field Indexes, Compound Index (단일 인덱스, 복합 인덱스) [MongoDB] Single Field Indexes(단일 인덱스), Compound Index(복합 인덱스) Single Field Indexes (단일 인덱스) 쿼리에서 단 하나의 key만을 이용한다면 단일 키 인덱스를 사용해야 한다. db.records.createIndex( { score: 1 } ) records 필드를 키로 인덱스를 만든다. 여기서 1은 오름차순, -1은 내림차순을 의미한다. score생성된 인덱스는 다음과 같이 필드에서 선택하는 쿼리를 지원한다 . db.records.find( { score: 2 } ) db.records.find( { score: { $gt: 10 } } ) 생성한 인덱스를 확인하기 위해서 아래와 같이 조회 할 수 있다. db.records.getInde.. 2023. 3. 14.
[MongoDB] 인덱스(index)란? 인덱스 설계 시 고려할 점 [MongoDB] 인덱스(index)란? 인덱스 설계 시 고려할 점 인덱스(index)란? 1. index는 우리 말로 색인이라 한다. 2. 데이터베이스의 인덱스는 원하는 정보를 빨리 찾을 수 있도록 돕는 색인의 역할을 한다. 3. 영어사전에서 a, b, c ... 알파벳 순서대로 정렬이 되어있듯이 인덱스도 순서가 있는 무언가로 정렬되어 있다. 4. 작은 숫자에서 큰 숫자 혹은 반대 즉, 정방향이든 역방향이든 무언가로 정렬이 되어있다. index가 왜 필요할까? 1. 정렬기준, 정렬조건을 알고 있다면 전화번호부, 책, 사전등에서 내가 원하는 정보가 어디쯤 있을지 예상이 가능하다. 2. 인덱스가 없이 정렬되지 않고 작성되어있는 책, 사전이라면 찾는 정보가 어디쯤 있을 지 예상하지 못한채 하나하나 찾아야 한.. 2023. 3. 13.
[MongoDB] $elemMatch (query) [MongoDB] 몽고 DB에서 배열 요소에 대한 쿼리, $elemMatch (query) $elemMatch 연산자는 지정된 모든 쿼리 기준과 일치하는 요소가 하나 이상 있는 배열 필드가 포함된 문서와 일치한다.{ : { $elemMatch: { , , ... } } } - 단일 조건만 지정하는 경우 $elemMatch 표현식 내부에 $not 또는 $ne 연산자를 사용하지 않는다. - $elemMatch , $elemMatch 생략할 수 있다. - $elemMatch안에서 $where 식을 지정할 수 없다. - $elemMatch안에서 $text 쿼리 식을 지정할 수 없다.  요소 일치* MongoDB Shell에서 진행아래와 같은 문서 내용을 삽입해준다.db.scores.insertMany([ { .. 2023. 3. 10.
[MongoDB] 배열의 여러가지 Query 종류 배열의 여러가지 Query 종류 ( 배열과 일치, 요소에 대한 쿼리, 배열 요소에 대한 복합 필터 조건으로 쿼리, 여러 기준을 충족하는 배열 요소에 대한 쿼리, 인덱스 위치로 요소 쿼리, 배열 길이로 쿼리 ) * MongoDB Shell에서 진행 아래와 같은 문서 내용을 삽입해준다. db.inventory.insertMany([ { _id: 1, item: "A", price: 25, colors: ["blank", "red"], diff: [ 14, 21 ] }, { _id: 2, item: "B", price: 50, colors: ["red", "blank"], diff: [ 14, 21 ] }, { _id: 3, item: "C", price: 100, colors: ["red", "blank",.. 2023. 3. 10.
[MongoDB] 내장/중첩 문서에 대한 검색(쿼리) [MongoDB] 객체 안에 객체가 있는 문서 즉, 내장/중첩 문서에 대한 쿼리(검색) * MongoDB Shell에서 진행 아래와 같은 문서 내용을 삽입해준다. db.user.insertMany([ { _id: 1, info: { role: "Magician", level: 15 }, name: "user1", skills: [ "A", "B", "C" ] }, { _id: 2, info: { role: "Warrior", level: 20 }, name: "user11", skills: [ "B" ] }, { _id: 3, info: { role: "Magician", level: 25 }, name: "user111", skills: [ "A", "B" ] }, { _id: 4, info: { ro.. 2023. 3. 9.
[MongoDB] 값 일치, 값 포함 여부로 검색 ($eq, $regex) [MongoDB] $eq, $regex를 이용한 값(문서, 배열)일치, 값 포함 여부(정규식) 검색 $eq 비교 쿼리 연산자(Comparison Query Operators) 중 하나로 지정된 값과 같은 값을 찾는다. $regex 평가 쿼리 연산자 중 하나로 값이 지정된 정규식과 일치하는 문서를 선택한다. * MongoDB Shell에서 진행 아래와 같은 문서 내용을 삽입해준다. db.user.insertMany([ { _id: 1, info: { name: "user1", role: "Magician" }, level: 15, skills: [ "A", "B", "C" ] }, { _id: 2, info: { name: "user11", role: "Warrior" }, level: 20, skills.. 2023. 3. 9.
반응형