NoSQL (mongoDB) (8)

BirdsOnTree·2023년 1월 2일
0

Node.js

목록 보기
8/8
post-thumbnail

MySQL 과 NoSQL 차이

MongoDB의 CRUD

몽고디비는 컬럼을 정의하지 않아도 된다는 장점을 가지고있는데 이는 무엇이 들어올지 모른다는 단점이 되기도 한다.
ObjectId라는 몽고디비의 자료형으로 고유의 아이디 역할을 한다.

Create

$ mongo
> use nodejs;
switched to db nodejs

> db.users.save({ name: 'james', age: 24, marred: false,
comment: '안녕하세요', createdAt: new Date() });
WriteResult({"nInserted": 1})

> db.users.save({ name: 'micheal', age: 30, married: true, 
comment: '안녕하세요. 제임스의 친구입니다.', createdAt: new Date() })
WriteREsult({"nInserted": 1})

관계설정 > 컬렉션간의 관계를 강요하는 제한이 없으므로 직접 ObjectId를 넣어 연결한다.

> db.users.find({ name: 'james', {_id: 1}})
{"_id": objectId('id값...')}
> db.comment.save({ commenter: objectId('id값...'), {comment: '안녕'}})
WriteResult({"nInserted": 1})

Read

> db.users.find({})
모든 유저들 보여준다.

> db.comments.find({})
모든 코멘츠를 보여준다.

두번째 파라미터로 조회할 필드 선택

> db.users.find({}, {_id: 0, name: 1, marrried: 1})
유저들중을 보여주는데 이름과 결혼 필드만 보여준다.

첫번째 인수로 조회 조건 입력 ($gt, $or 같은 조건 연산자를 사용한다.)

> db.users.find({age: {$gt: 30}, married: true}, {_id: 0, name: 1})
나이가 30 이상인 유저의 이름만 보여준다.
> db.users.find({$or: [{age: {$gt: 30} } , {married: false }] }, 
{_id: 0, name: 1})
나이가 30이상 이거나, 결혼이 false인 사람의 이름을 보여준다.

그 외에도 sort로 정렬, limit으로 다큐먼트 개수 제한, skip으로 건너뛸 다큐먼트 개수를 정할수 있다.

Update

첫번째 인수로 수정 대상을, 두번째 인수로 수정 내용을 제공한다. $set을 붙이지 않으면 다큐먼트 전체가 대체되므로 주의를 해야한다.

db.users.update({name: 'james', {#set: {comment: '바뀐 내용' } } })
WriteResult({"nmatched": 1, "nUpserted": 0, "nModefied: 1"})

결과로는 수정된 개수가 나온다.

Delete

> db.users.remove({name: 'james'})
WriteResult({'nRemoved': 1})

성공시 삭제된 개수가 반환된다.

몽구스 ODM

몽고디비 작업을 쉽게 할 수 있도록 도와주는 라이브러리이다.

  • ODM(Oject Document Mapping): 객체와 다큐먼트를 1:1로 매핑
  • 몽고디비에 없어 불편한 기능들을 모구스가 보완
  • 테이블과 유상한 기능, JOIN기능이 추가

0개의 댓글