[MongoDB] Mongo DB 기본 메모

김택주·2023년 1월 17일

Mongo DB

목록 보기
1/9

출처: https://www.fun-coding.org/mongodb_basic1.html#gsc.tab=0

NOSQL


Not Only SQL
스키마 및 조인이 없는 구조
트랜잭션 없음

NOSQL 별로 저장 구조 방식이 다름
document store (MongoDB),
key-value store (Redis),
graph store,
Widte Column store

실시간 데이터 처리를 위해 많이 사용함
write 비율이 50%가 넘을경우 NOSQLRDMS 보다 성능이 좋을수있음

데이터베이스


RDBMS에서 스키마 역할
물리적인 컨테이너 역할
JS로 만들어져서 인지 document(데이터) 인입 시 자동 생성됨

컬렉션


RDBMS에서 테이블 역할
도큐먼트의 모음

도큐먼트


RDMS에서 row 역할
key:value 구조
RDMS에서 조인으로 넣을 데이터를 하나의 다큐먼트로 만들어서 넣음
_id라는 유니크한 키값을 가짐

인덱스


몽고DB는 자동으로 _id 필드에 인덱스가 설정됨

조인


몽고DB의 aggregate $lookup 기능을 이용하여 조인 가능

기본 명령어


삭제 명령어는 기억하지 않음

db.articles.find({"likes": {$gt: 10, $lt: 30}})
db.articles.find({"writer": {$in: ["Alpha", "Brovo"]} })
db.articles.find({
        $or: [{"title": "article01"}, {"writer": "Alpha"}]
})
db.articles.find({ $and: [{"writer": "Velopert"}, {"likes": {$lt: 10}}] })
db.articles.find({ $where: "this.comments.length == 0" })
db.articles.find()
db.articles.find({ "comments": { $elemMatch: { "name":"Charlie"}}})

db : 현재 사용중인 db명 나옴
show dbs : 데이터베이스 목록 조회
show collections : 컬렉션 목록 조회
db.createCollection("test") : 'test' 컬렉션 생성
db.test.insert({ "test":"11" }) : 위 명령어로 생성하지 않고 document 추가 시 자동생성됨

db.articles.find() : 컬렉션 전체 조회, 반환 값으로 커서를 반환 결과값을 가르키는 포인터이며 사용하지않으면 10분뒤 만료됨
db.articles.find({ name: "11" }) : 'name'이 11인 데이터 조회
db.articles.find({ likes: {$lt: 10} }) : likes가 10보다 작은 데이터 조회

$eq (equals) : 같은
$lt (less than) : 보다 작은
$gt (greater than) : 보다 큰
$lte (less than equals) : 보다 작거나 같은
$gte (greater than equals) : 보다 크거나 같은
$in : type 배열인 데이터에서 포함된 데이터 처리할떄 사용
$nin (not in) : type 배열인 데이터에서 포함되지 않은 데이터 처리

$or : 프로그래밍 언어랑 의미 같음
$and : 프로그래밍 언어랑 의미 같음
$not (not true): 첫 조건은 false, 나중 조건은 true일때 사용
$non (not not): 조건 전부 false일때 사용

$where: javascript 으로 표현 가능 (정말 어쩔수없을떄 사용, 속도가 매우 느림)
/test/: test 문구 like 검색
/^test/: test로 시작하는 문구 like 검색
/test$/: test로 끝나는 문구 like 검색

$size: 배열 속성 검색 시 배열길이로 검색 가능

db.test.find({ testArr: { $size: 2 } });
testArr 길이가 2인 document만 검색 

0개의 댓글