이 포스팅은 아래의 강의를 참고한 개인 정리본이니 강의를 통해 공부하시는 것을 추천드립니다.
1. MongoDB Compass에서 shell 환경으로 커맨드 입력하는 방법
아래의 사진처럼 서버 연결 후 프로그램 좌측 하단에 '_MongoSH'를 클릭하면 입력할 수 있는 창이 올라온다.
커맨드에 'db'라고 입력 시, test라고 나올 것이다.
why? 처음 db에 접속할 때 접속 url의 끝에 test로 되어있을 것이다. (기본적으로 첫 세팅은 test db로 들어가게 되어있다.)
db
2. 다른 DB로 이동하기
아래의 명령어처럼 'use db명' 을 입력 시, 해당 db명으로 이동하게 된다.
use example
미리 만들어두지 않아도, 해당 db로 이동하게 되며 이동만으로는 실제로 해당 db가 생성되진 않는다.
하지만, 데이터를 추가하는 순간 실제로 해당 db가 생성된다.
3. sample 데이터 넣기
새로 생성한 디비로 이동하였으니, 여기에서 데이터를 넣어본다.
MongoDB는 JSON 형태이므로 JSON 형태에 맞게 데이터를 설정 후 엔터치면 된다.
세미콜론(;)은 적지않아도 되며 또, RDBMS처럼 기존에 테이블(여기선 컬렉션)을 정의하지 않아도 된다.
db.users.insertOne({name:"test1", email:"test1@naver.com", phone:"010-1234-5678"})
이렇게 데이터를 추가하면, 아까 보이지 않았던 추가한 DB가 보이게 된다.
4. 위에서 추가한 데이터를 조회하기
db.users.find()
위에서 데이터를 추가할 때 name, email, phone만 넣었는데 _id가 보인다.
_id : MongoDB에서 사용하는 자동 생성 PK 값이라고 생각하면 된다.
5. mongoDB의 특징 - schemaless 란?
아래의 사용자를 추가하는데, 이번에는 phone 안에 String이 아니라 JSON 형태의 객체를 넣어보자.
db.users.insertOne({name:"test2", email:"test2@naver.com", phone:{phone1:"010", phone2:"2345", phone3:"3456"}})
잘 넣어지는 것을 확인할 수 있다.
즉, RDBMS와는 다르게 테이블을 미리 정의하지 않고 객체 안에 객체를 넣을 수 있는 등. 유연한 조작이 가능하다.
6. 데이터를 조작해보자
1)
존재하는 데이터를 수정할 때에 update를 이용하는데, 아래에서는 updateOne이라는 하나만 수정하는 명령문을 이용한다.
db.users.updateOne(해당 데이터의 조건, 수정할 데이터 내용)
추가로, $set을 사용하면 필드를 추가할 수 있다.
db.users.updateOne({name:"test1"}, {$set:{age:10}})
2) 필드 안에 있는 객체를 수정해보자
우선 필드안에 있는 객체를 기준으로 검색해보자.
아래의 명령문도 조건을 넣어서 하나만 조회할 수 있다. (
db.users.findOne(조건)
db.users.findOne({"phone.phone2" : "2345"})
필드 안에 있는 객체를 수정할 때도 위와 비슷하게 진행하면 된다.
db.users.updateOne({name:"test2"}, {$set:{"phone.phone3" : "7777"}})
3) 탐색할 때 조건을 ID로 해보자
그렇다면 위와 같이 _id를 넣어서 하면 된다. (_id는 고정적인 값 즉, PK의 역할이기 때문에 탐색 시 조건으로 용이하다.)
db.users.findOne({ _id: ObjectId("62db838e1d7d3a45df030055") })
만약 ObjectId가 Undefined라고 뜬다면, MongoDB 버전 문제이다.
예전 버전에서는 mongodb compass에서는 ObjectID가 뭔지를 모르기 때문에 오류가 나며 그렇기 때문에 ObjectID를 선언해주고 위의 명령어를 검색해야한다.
선언 방법
let ObjectID = require('mongodb').ObjectID
4) 데이터 삭제
데이터는 아래와 같은 방법으로 삭제하였다.
db.users.deleteOne({_id:ObjectId("62d951dfa0bef3d7e61271bf")})
* mongoDB 구조 정리
db명 : example
db안에 있는 collection명(RDBMS로 비유하자면 table) : users
users collection 안에 있는 데이터를 document라고 함. (RDBMS로 비유하자면 row)
'DB > MongoDB' 카테고리의 다른 글
[MongoDB 기초부터 실무까지] 6. Board API 만들기 및 라우터 안에 라우터 파라미터 사용 방법 (0) | 2022.08.05 |
---|---|
[MongoDB 기초부터 실무까지] 5. Node.js로 MongoDB 접근해보기 (0) | 2022.08.01 |
[MongoDB 기초부터 실무까지] 4. Node.js 동기 프로그래밍(Callback, Promise, Await) (0) | 2022.07.27 |
[MongoDB 기초부터 실무까지] 3. Node.js 환경 세팅 및 REST API 만들기 (0) | 2022.07.25 |
[MongoDB 기초부터 실무까지] 1. MongoDB 설치 (0) | 2022.07.20 |