2018 Mad camp/기술

[MongoDB]정리

goakgoak 2019. 1. 5. 10:43

MongoDB

NoSQL 기존의 관계지향형 데이터베이스에 의존하지 않는

key-value 쌍의 Document 형태로 저장하는 문서지향적 데이터베이스이다.

테이블이 아닌 컬렉션으로 부르며 컬렉션 마다 구조가 다를 수 있다.

SERVER
    +--DATABASE
    +--COLLECTION
    +-- DOCUMENT
      +--{ key:value }

기본 명령어

  • MongoDB 서버 실행

mongod
  • 클라이언트로 접속

mongo
  • 사용할 데이터베이스 선택

 use db_name
use mongodb_tutorial
  • 현재 db 목록 보기 (데이터가 비어있으면 목록에 나와있지 않는다.)

show dbs
db.sample.insert({"name:" "sample"});
  • db 제거 (제거하기 전에 선택 되어 있어야 함)

// use ,,,
db.dropDatabase()
  • 컬렉션 생성

db.createCollection(name,[options])
db.createCollection("books")

// 따로 메소드를 사용하지 않아도 document를 추가하면 자동으로 컬렉션 생성
db.people.insert({"name:" "velopert"});
show collections
  • 옵션

crapped : data 사이즈 고정, 초과시 오래된 데이터 부터 덮어씀
size : data 사이즈 설정
max : data 갯수 설정
  • 컬렉션 제거

db.collection_name.drop()
db.people.drop()
  • Document 삽입

db.collection_name.insert(document)
db.books.insert({"name": "NodeJS Guide", "author": "Velopert"})
db.books.insert([
{"name": "book1", "author": "Velopert"},
{"name": "book2", "author": "Velopert"}
])
  • Document 제거

db.collection_name.remove(criteria,[justOne])
// 하나의 데이터만 삭제 하고싶을 때 true로 설정, default : false
db.books.remove({"name": "NodeJS Guide"})
db.books.remove({"author": "Velopert"},true)
  • Collection 조회

db.collection_name.find([query],[projection])
db.books.find()
db.books.find().pretty() // 예쁘게
db.numbers.find({"value": 56}) // value가 56인 document 조회
db.numbers.find({"value":{ $gt: 100} }) // value가 100 이상인 ...
  • sort

db.collection_name.find().sort({"value":1}) // 오름차순 정렬
db.collection_name.find().sort({"value":-1}) // 내림차순 정렬
  • limit

db.numbers.find().limit(3) // 3개만 보여줍니다.
  • skip

db.numbers.find().skip(2) // 2개는 생략하고 그 다음부터 보여줍니다.
  • 데이터 수정

db.people.insert([
  {name:"Abet",age:19},
  {name:"Betty",age:20},
  {name:"Charlie",age:23, skills:["modngodb","nodejs"]},
  {name:"David",age:23, score:20}
])
  • 특정 field 업데이트하기

db.people.update({name:"Abet"}, {$set:{age:20}})
  • document replace

db.people.update({name:"Betty"}, {"name":"Betty 2nd", age:1})
  • 특정 field 제거

db.people.update({name:"David"}, {$unset:{score:1}})

Mongoose

MongoDB을 기반으로한 ODM(객체 데이터를 매핑해주는) Node.js에서 사용가능한 라이브러리이다. ODM은 몽고디비에 있는 데이터를 Client APP에서 JavaScript 객체로 사용할 수 있게 해준다.