MongoDB

[MongoDB] DB/Collection/Document CRUD, 기본 쿼리

코복이 2023. 8. 1. 15:19
728x90

MongoDB?

NoSQL DBMS의 한 종류.

MongoDB는 NoSQL로 분류되는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. MySQL 처럼 전통적인 테이블-관계 기반의 RDBMS가 아니며 SQL을 사용하지 않는다.

이름의 mongo는 humongous를 줄인 표현이다. 즉 '겁나 큰 DB' 라는 뜻.

 

📌MongoDB의 DB 구조

Database > Collection > Document > field

 

 

 

DB CRUD (생성/조회/수정/삭제)

생성: db 생성 및 연결

📌use db이름 실행 // 동일한 이름이 있으면 db로 연결하고 없으면 새로 생성

📌데이터베이스는 기본적으로 admin, local, config 가 존재한다.

 

    • > use db이름

 

 

조회: db 전체 보기

> show dbs

 

 

수정: db 수정(이름변경) 기능은 없음. 삭제하고 새로 만들어야 함.

> db.copyDatabase('이전db', '신규db')
> use 이전db
> db.dropDatabase() // 삭제

 

 

삭제: 삭제할 데이터베이스에 연결하고 db.dropDatabase()를 실행하면 삭제할 수 있다.

> use db 이름 // 해당 db 연결
> db.dropDatabase(); // 삭제

 

 

 

Collection CRUD (생성/조회/수정/삭제)

생성: 해당 db 내에 collection 생성.

> db.createCollection("콜렉션이름");

 

 

 

조회: 해당 db 내에 모든 collection 보기

> show collections

 

 

수정: renameCollection()

> db.콜렉션이름.renameCollection(변경할이름, true);

 

 

삭제:drop()

> db.컬렉션이름.drop();

 

 

 

Document CRUD (생성/조회/수정/삭제)

생성: 하나 생성하면 insertOne({내용}),여러개 생성하면 insetMany([{내용},{내용},{내용}])

> db.콜렉션이름.insertOne(
        {name: 'sample book', price: 1280}
    )

> db.콜렉션이름.insertMany([
        {name: 'sample book', price: 1280},
        {name: 'sample book', price: 1280},
        {name: 'sample book', price: 1280}
    ])

 

 

조회: 도큐먼트 조회인수에 지정하는 쿼리의 기본 형식은 { 필드: { 연산자: 값}}와 같다.

> db.콜렉션이름.find(
         {name: {$eq: 'sample book'}}
    )

 

쿼리 연산자 가이드

https://www.mongodb.com/docs/manual/reference/operator/query/

 

 

 

수정: updateOne() 첫번째로 해당하는 값 변경

📌$set 연산자와 함께 사용

> db.products.update(
        {name: {$eq: 'sample book'}},
        {$set: {name: 'Hack MongoDB'}},
        {upsert: false, multi: true}
    )

📌첫번째 인수로 지정한 조건에 매치하는 도큐먼트를, 두번째 인수로 지정한 문서 내용으로 변경한다. 세번째 인수의 객체로 지정하고 있는 upsert는 “조건에 일치하는 문서가 발견되지 않았을 경우에 삽입할지 에 대한 여부"를 지정하고 있고, multi는 “조건에 일치하는 도큐먼트 모두를 변경 대상으로 할지에 대한 여부"를 지정한다.

 

 

 

삭제: deleteOne() , deleteMany()

📌db.[컬렉션명].deleteOne({key:value}) - 맨 처음으로 매칭되는 1개의 데이터(document) 삭제

``db.employees.deleteOne({status:"A"})``` ⇢ 첫번째 {status:"A"} 삭제

 

📌db.[컬렉션명].deleteMany({key:value}) - 모든 {status:"A"} 삭제

``db.employees.deleteMany({status:"A"})``` ⇢ 모든 {status:"A"} 삭제

 

📌db.[컬렉션명].deleteMany({}) - 해당 컬렉션의 document 모두 삭제

``db.employees.deleteMany({})``` ⇢ 데이터(document) 모두 삭제

 

 

> db.콜렉션이름.deleteMany(
        {name: {$eq: 'sample book'}}
    )

 

 

 

728x90