코드코코

210925 [8장] 8.5 몽고디비 CRUD 작업하기 본문

기록/node.js 교과서 따라하기

210925 [8장] 8.5 몽고디비 CRUD 작업하기

코드코코 2021. 9. 25. 22:57
 자료형
 - 기본적으로 자바스크립트의 자료형을 따른다.
 - Date, 정규표현식 등
 - 추가 : Binary data, ObjectId, Int, Long, Demical, Timestamp, JavaScript 등
 - ObjectId 는 MySQL에서 기본키와 비슷한 역할로 다큐먼트 조회시 사용.
 
 1.CREATE

> use nodejs;
switched to db nodejs

//다큐먼트생성
//db.컬렉션명.save(다큐먼트)
//자바스크립트 객체처럼 생성
> db.users.save({name: 'zero', age: 24, married: false, comment: '안녕하세요. 간단히 몽고디비 사용 방법에 대해 알아봅시 다.', createAt: new Date()});
WriteResult({ "nInserted" : 1 })
> db.users.save({name: 'nero', age: 32, married: true, comment: '안녕하세요. zero친구 nero입니다.',createAt: new Date()});
WriteResult({ "nInserted" : 1 })

//zreo의 아이디 찾기
> db.users.find({name:'zero'},{_id:1})
{ "_id" : ObjectId("614d7f6554beaad723c3bcd3") }
>

> db.comments.save({commenter: ObjectId('614d7f6554beaad723c3bcd3'),comment: '안녕하세요. zero의 댓글입니다.',createdAt: new Date()});
WriteResult({ "nInserted" : 1 })

2.READ

//find({}) : 컬렉션 내의 모든 다큐먼트 조회
> db.users.find({});
{ "_id" : ObjectId("614d7f6554beaad723c3bcd3"), "name" : "zero", "age" : 24, "married" : false, "comment" : "안녕하세요. 간단히 몽고디비 사용 방법에 대해 알아봅시다.", "createAt" : ISODate("2021-09-24T07:33:57.876Z") }
{ "_id" : ObjectId("614d7fc254beaad723c3bcd4"), "name" : "nero", "age" : 32, "married" : true, "comment" : "안녕하세요. zero친구 nero입니다.", "createAt" : ISODate("2021-09-24T07:35:30.798Z") }
> db.comments.find({});
{ "_id" : ObjectId("614d815a54beaad723c3bcd5"), "commenter" : ObjectId("614d7f6554beaad723c3bcd3"), "comment" : "안녕하 세요. zero의 댓글입니다.", "createdAt" : ISODate("2021-09-24T07:42:18.622Z") }

//특정필드만 조회
//find({},{조회할 필드:1})
//_id : 기본적으로 가지고 옴. 가져오기 싫다면 0
// 1 또는 true로 표시한 필드만 가져온다.
> db.users.find({},{_id: 0, name: 1, married: 1});
{ "name" : "zero", "married" : false }
{ "name" : "nero", "married" : true }

//조회시 조건부여
//find({조건}},{조회할 필드:1})
//age가 30초과, married가 true 인 다큐먼트의 이름과 나이를 조회
> db.users.find({age:{$gt:30},married:true},{_id: 0, name: 1, married: 1});
{ "name" : "nero", "married" : true }

$gt : 초과
$gte : 이상
$lt : 미만
$lte : 이하
$ne : 같지않음
$or : 또는
$in : 배열 요소 중 하나

//age가 30초과이거나 married가 false 인 다큐먼트의 이름과 나이를 조회
//$or: 주어진 배열 한의 조건들을 하나라도 만족하는 다큐먼트를 모두 찾음.
> db.users.find({$or:[{age:{$gt:30}},{married:false}]},{_id: 0, name: 1, age: 1});
{ "name" : "zero", "age" : 24 }
{ "name" : "nero", "age" : 32 }

//정렬하기
//sort() 메서드 사용 : -1(오름차순), 1(내림차순)
> db.users.find({},{_id:0,name:1,age:1}).sort({age:-1})
{ "name" : "nero", "age" : 32 }
{ "name" : "zero", "age" : 24 }

//조회할 다큐먼트 개수 설정
//limit(개수)
> db.users.find({},{_id:0,name:1,age:1}).sort({age:-1}).limit(1)
{ "name" : "nero", "age" : 32 }

//조회할 다큐먼트 개수 설정하면서 몇 개를 건너 뛸지 설정
//skip(갯수) 메서드 사용
> db.users.find({},{_id:0,name:1,age:1}).sort({age:-1}).limit(1).skip(1)
{ "name" : "zero", "age" : 24 }

3.UPDATE

//db.컬렉션명.update({수정 할 다큐먼트 지정},{$set:{수정할 내용}})
//$set : 어떤 필드를 수정할 지 정하는 연산자, 만약 이 연산자를 사용하지 않고 일반 객체를 넣는다면,
//다큐먼트가 통째로 두 번째 인수로 주어진 객체로 수정됨.
//nMatched : 첫 번째 객체에 해당하는 다큐먼트 수
//nModified : 수정된 다큐먼트 수 
> db.users.update({name:'nero'},{$set:{comment:'안녕하세요. 이 필드를 바꿔보겠습니다.'}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

4.DELETE

//db.컬렉션명.remove({다큐먼트 정보가 담긴 객체})
//삭제할 다큐먼트에 대한 정보가 담긴 객체를 첫번째 인수로 제공
//성공시 삭제된 개수 반환
> db.users.remove({name:'nero'})
WriteResult({ "nRemoved" : 1 })