728x90
반응형
1. 스키마와 모델
- 스키마는 MongoDB 컬렉션에 들어가는 문서 내부의 각 필드가 어떤 형식으로 되어 있는지 정의하는 객체
- 모델은 MongoDB의 데이터에 대한 조회, 생성, 수정, 삭제와 같은 처리를 할 수 있는 다양한 함수 내장
2. 스키마 정의
- 옵션
- type : 데이터 타입
- required : 필수 값 여부
- unique : 유일한 값인지 여부
- default : 데이터가 없을 경우 기본 값(ex: Date.now()
- MongoDB 설치 후, customers라는 컬렉션 생성, 다음과 같은 Document를 추가
{
"name" : "Lee",
"email" : "Lee123@naver.com",
"phone: : "010-1234-1234",
"addres" : "123-2"
}
- Document 정의
필드명 | type | required | unique | default |
name | String | true | ||
String | true | true | ||
phone | String | true | true | |
address | String |
- String : 문자열
- Number : 숫자
- Date : 날짜
- Buffer : 파일을 담을 수 있는 버퍼
- Boolean : 참(true)과 거짓(false)
- Mixde(Schema, Types, Mixed) : 어떤 데이터도 넣을 수 있는 형식
- Array : 배열
- ObjectId(Schema, Types, ObjectId) : 객체 아이디, 다른 객체(문서)에 대한 참조
- mongoose 폴더에 schemas 폴더를 만들고, customer.js 파일 생성 후 코드 작성
- mongoose 모델은 mongoose.model() 함수를 사용해 생성
- mongoose.model() 함수는 두 개의 파라미터를 가지고 있는데 첫 번째는 스키마 이름이고, 두 번째는 스키마 객체이다.
3. 문서 검색
- app_mongodb.js 파일을 만들고 express로 웹 서버 생성
- app_mongodb.js 실행
node app_mongodb.js
- localhost:3001/customers로 접속하면 콘솔에 customers 컬렉션에 저장된 Document 조회 결과를 출력한다.
4. 문서 추가
- 문서 추가할 때는 모델의 create() 함수를 사용해 추가
// 새로운 문서를 하나 추가할 때
const r = awit Customer.create({
name: "Customer1",
email: "customer1@naver.com",
phone: "010-1111-1111",
address: "",
});
console.log(r);
// 두 개 이상의 문서를 한 번에 추가할 때
awit Customer.create([
{
name: "Customer2",
email: "customer2@naver.com",
phone: "010-2222-2222",
address: "",
},
{
name: "Customer3",
email: "customer3@naver.com",
phone: "010-3333-3333",
address: "",
},
]);
5. 문서 수정
- Model.findByIdAndUpdate()
- 문서의 _id 값으로 조회된 결과에 해당하는 문서를 수정한다.
awit Customer.findByIdAndUpdate(id, {phone:'010-1234-5678'});
// id: 문서의 _id 값
// update: 수정할 필드, 자바스크립트 Objec(ex: {phone:'010-1233-3333'})
// [options]: new, lean, session, strict, timestamp, returnOriginal, overwrite 등
// [callback]: 콜백 함수로 결과 전달
- Model.updateMany()
- 조회된 모든 문서를 수정
awit Customer.updateMany({name: /Kim/}, {phone: '010-3333-3333'});
// [conditions]: 조회 조건, 자바스크립트 Object
// [update]: 수정할 필드, 자바스크립트 object(ex: {phone: '010-3333-3333'})
// [options]: strict, upsert, writeConern, timestamps 등
// [callback]: 콜백 함수로 결과 전달
- Model.updateOne()
- 조회된 결과 중 첫 번째 문서를 수정
awit Customer.updateOne({name: /Kim/}, {phone: '010-3333-3333'});
// [conditions]: 조회 조건, 자바스크립트 Object
// [update]: 수정할 필드, 자바스크립트 object(ex: {phone: '010-3333-3333'})
// [options]: strict, upsert, writeConern, timestamps 등
// [callback]: 콜백 함수로 결과 전달
6. 문서 삭제
- Model.deleteMany()
- 조건에 해당하는 모든 문서를 삭제
awit Customer.deleteMany({name: /Lee/ }); // name에 'Lee'가 포함된 모든 문서 삭제
// [conditions]: 조회 조건, 자바스크립트 Object
// [options]: strit, session 등 옵션
// [callback]: 콜백 함수로 결과 전달
- Model.deleteOne()
- 조회된 결과 중 첫 번째 문서를 삭저
awit Customer.deleteOne({name: /Lee/ }); // name에 'Lee'가 포함된 문서 중 첫번째 삭제
// [conditions]: 조회 조건, 자바스크립트 Object
// [options]: strit, session 등 옵션
// [callback]: 콜백 함수로 결과 전달
728x90
반응형
'Runtime > Node.js' 카테고리의 다른 글
21. 메일링 서비스(Nodemailer) (7) | 2023.04.18 |
---|---|
20. 로그 관리 (2) | 2023.04.18 |
18. MongoDB(mongoose 모듈) (5) | 2023.04.10 |
17. MongoDB(툴 설치 및 준비) (3) | 2023.04.10 |
16. MongoDB (Mac 설치) (1) | 2023.03.12 |