몽고DB 설치
커뮤니티 서버 다운로드 받으면된다
설치하면 MongoDB compass가 자동으로 켜지는데 이게 MongoDB를 관리하는 프로그램
MongoDB 설명 참고링크
위 링크에 설치하고 나서 세팅하는 것도 나와있다

관계형 DB의 한계를 극복
NoSQL 데이터베이스


Collection이 관계형DB의 테이블이라고 보면된다
Database는 Collection들의 컨테이너
Database > Collection > Document > field



var mongoose = require('mongoose');
// schema, 이렇게 스키마를 입력하면 이대로 테이블(몽고디비에서는 컬렉션)을 만들어줌
// 속성명이 필드의 이름이 된다
// required:true 는 필수값
// default는 기본값
var profileSchema = mongoose.Schema({ // 1
id:{type:String, required:true},
name:{type:String, required:true},
password:{type:String, required:true},
incumbent:int,
});
// model & export
var Profile = mongoose.model('profile', profileSchema); //model 메소드를 이용해서 스키마를 객체처럼 사용할 수 있음
module.exports = Profile; //외부에서 require로 가져다 사용함
위 코드는 프로젝트 구조에서 model 디렉토리에서 db 관련 설정을 하는데 스키마를 작성하고 스키마를 db 객체로 만들어서 export 해서 외부 파일에서 가져다 사용할 수 있게 만들어놓는 것이다.
// 1. mongoose 모듈 가져오기
var mongoose = require('mongoose');
// 2. testDB 세팅
mongoose.connect('mongodb://localhost:27017/testDB');
// 3. 연결된 testDB 사용
var db = mongoose.connection;
// 4. 연결 실패
db.on('error', function(){
console.log('Connection Failed!');
});
// 5. 연결 성공
db.once('open', function() {
console.log('Connected!');
});
// 6. Schema 생성. (혹시 스키마에 대한 개념이 없다면, 입력될 데이터의 타입이 정의된 DB 설계도 라고 생각하면 됩니다.)
var student = mongoose.Schema({
name : 'string',
address : 'string',
age : 'number'
});
// 7. 정의된 스키마를 객체처럼 사용할 수 있도록 model() 함수로 컴파일
var Student = mongoose.model('Schema', student);
// 8. Student 객체를 new 로 생성해서 값을 입력
var newStudent = new Student({name:'Hong Gil Dong', address:'서울시 강남구 논현동', age:'22'});
// 9. 데이터 저장
newStudent.save(function(error, data){
if(error){
console.log(error);
}else{
console.log('Saved!')
}
});
// 10. Student 레퍼런스 전체 데이터 가져오기
Student.find(function(error, students){
console.log('--- Read all ---');
if(error){
console.log(error);
}else{
console.log(students);
}
})
// 11. 특정 아이디값 가져오기
Student.findOne({_id:'585b777f7e2315063457e4ac'}, function(error,student){
console.log('--- Read one ---');
if(error){
console.log(error);
}else{
console.log(student);
}
});
// 12. 특정아이디 수정하기
Student.findById({_id:'585b777f7e2315063457e4ac'}, function(error,student){
console.log('--- Update(PUT) ---');
if(error){
console.log(error);
}else{
student.name = '--modified--';
student.save(function(error,modified_student){
if(error){
console.log(error);
}else{
console.log(modified_student);
}
});
}
});
// 13. 삭제
Student.remove({_id:'585b7c4371110029b0f584a2'}, function(error,output){
console.log('--- Delete ---');
if(error){
console.log(error);
}
/* ( SINCE DELETE OPERATION IS IDEMPOTENT, NO NEED TO SPECIFY )
어떤 과정을 반복적으로 수행 하여도 결과가 동일하다. 삭제한 데이터를 다시 삭제하더라도, 존재하지 않는 데이터를 제거요청 하더라도 오류가 아니기 때문에
이부분에 대한 처리는 필요없다. 그냥 삭제 된것으로 처리
*/
console.log('--- deleted ---');
});
위 코드는 라우팅 하면서 실제로 db에 접근할 때 참고할 만한 코드들이다.
참고 링크
스키마에 _id 속성값으로 id를 직접 설정해주지 않으면 자동으로 들어감


id는 RDBS에서의 pk와 같은 역할을 한다
위 영상을 참고
mongo db atlas에 드가서 로그인
Database를 만들어준다
DB가 완성되면 연결할 수 있도록 설정해야함
MongoDB에 연결할 수 있는 링크인 엔드페이지를 받아야 그 링크를 이용해 mongoDB에 데이터를 쓰고 불러올 수 있다.
접근할 IP 같은거 설정하게 하는데 내 IP 넣거나 0.0.0.0 넣으면 모든 사람이 접근할 수 있다.
유저별로 이 유저는 쓰는것만 가능하고 지우는것만 가능하고 이런 설정도 가능함
DB 생성후 설정을 해주고 나면 화면이 이렇게 뜸

Connect 누르고


이거 복사해서 쓰면됨. 클러스터 만들고 세팅할 때 user랑 pw 정하는데 그 때 유저이름이 coogle123이고 pw를 password 에 넣어주면된다.

위에서 설명하는 내용이 DB를 서버에 올리는거임 aws 서버에 올린건데
이걸 팀원이랑 공유하려면 ip 권한을 0.0.0.0으로 했으면 그냥 공유가 되겠지만 그렇게 안했으면 팀원 ip를 내가 추가해줘야함
그러면 ip를 추가받은 팀원은 몽고 db 설치할 때 같이 설치한 mongoDBCompass에 db 링크를 입력해서 드가면 DB에 데이터가 잘 추가 된건지 상태를 확인할 수 있음