TIL-jsstudy0809

이걸 정리하면서 조금씩 알게 되는 느낌이다.
하지만 아직 뭣도 모르겠다.

이번엔 몽고DB라는 것을 정리할 것이다.
사실 스터디에서 이걸 이용했는데, 왜 운용되는지 1도 모르고 그냥 보기만 했다. 뭐 지금이라도 이해하면 되는 것 아닌가!?

mongoDB : 데이터베이스의 한 종류
mongoose : node.js에서 mongoDB를 사용하게 해주는 노드의 확장모듈
-즉, mongoDB라는 NoSQL 데이터베이스를 지원하는 노드의 확장모듈
-mongoDB의 ODM : 문서를 DB에서 조회할 때 자바스크립트 객체로 바꿔주는 역할

NoSQL : 관계형 데이터 모델을 사용하지 않고 SQL을 사용하지 않는 그 이외의 모든 데이터베이스 시스템 또는 데이터 스토어
-무한에 가까운 확장성을 제공

mongoDB
-문서지향(Document-Oriented) 저장소를 제공하는 NoSQL 데이터베이스 시스템
-데이터가 Document로 불리며, 이 데이터의 집합을 Collection(RDMS에서는 Table)이라고 함.

mongoose 모듈 : mongoDB라는 NoSQL 데이터베이스를 지원하는 노드의 확장 모듈
-데이터를 만들고 관리하기 위하여 스키마(Schema)를 만들고, 그 스키마로 모델(Model)을 만듦. 즉, 스키마와 모델을 만드는 것을 통하여 data를 불러온 후에 그 데이터를 객체화시켜 빠르게 수정함으로써 데이터에 접근할 수 있게 해줍니다.

위의 둘을 연결해야함
connect() 메소드 : mongodb:// 로 시작하는 URI 값이나 host, database, port, options를 인자로 받습니다.

방법 1

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/goormdb')

위에서처럼 데이터베이스가 연결되면, connection 인스턴스가 생성되며 연결되는 순간에는 open 이벤트가 발생합니다. 이때 인스턴스는 mongoose.connection입니다. goormdb라는 데이터베이스가 없다면 mongoDB는 이를 자동으로 생성합니다.
단 하나의 데이터베이스에 연결할 때에만 유효합니다. 여러 데이터베이스를 사용하고자 할 때는 mongoose.connect()를 사용할 수 없습니다.

이 때는 mongoose.createConnection() 메소드를 사용하면 됩니다. 이 메소드는 mongoose.connection()과 같은 인자를 받으면서 반환값으로 connection 인스턴스를 반환합니다.
또한 mongoose 5 버전부터는 업데이트가 되어 useNewUrlParser 옵션을 사용해주지 않으면 경고 메세지가 출력됩니다. 따라서 아래 형태로 쓰는 것이 좋습니다.

mongoose.connect('mongodb://localhost/goormdb', { useNewUrlParser });

방법2

const connection = mongoose.createConnection('mongodb://localhost/test', options);

이 방법을 통해 하나의 애플리케이션에서 여러 개의 데이터베이스로 연결할 수 있게 됩니다.

모델 정의하기
모델을 사용하려면 생성한 모델의 인스턴스를 또 한 번 생성하여야 합니다. 생성한 인스턴스를 이용하여 우리가 원하는 실제 데이터베이스 작업을 수행할 수 있습니다.
Schema : 데이터베이스를 구성하는 레코드의 크기, 키(key)의 정의, 레코드와 레코드의 관계, 검색 방법 등을 정의한 것.

var Schema = mongoose.Schema, ObjectId = Schema.ObjectId;
var ArticleSchema = new Schema({
    author: ObjectId,
    title: String,
    body: String,
    date: Date
});

var ArticleModel = mongoose.model('Article', ArticleScheme);

스키마를 정의 후, 모델을 정의

그 후, 모델을 사용한다

var instance = new ArticleModel();
instance.title = 'hello';
instance.save(function (err){
            // save 실행 후 콜백 함수의 내용
});
instance.find({}, function(err, docs){
            // find 실행 후 콜백 함수의 내용
});

검색기능
Model.find(query, fields, options, callback)

추가, 제외 기능도 있다

흑흑 감사합니다 덕분에 몽구스 이해 잘 할 수 있었어요!
출처 : https://edu.goorm.io/learn/lecture/557/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-node-js/lesson/174385/mongoose-%EC%82%B4%ED%8E%B4%EB%B3%B4%EA%B8%B0

좋은 웹페이지 즐겨찾기