본문 바로가기
반응형

데이터베이스/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)의 더미 유저 데이터가 있다. 데이터의 형식은 1 kfdd6630.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.
반응형