320x100
320x100

MongoDB 

: 문서지향 저장소를 제공하는 NoSQL DBMS

: 배열, 날짜 등 기존 RDBMS에서 지원하지 않는 형태의 데이터도 저장 가능

: 스키마가 없어 필드를 추가하거나 제거하는 것이 매우 쉬움

ㆍ데이터 = Document

ㆍ데이터 저장형식 = BSON (Binary Json)

 

RDBMS와의 비교

ㆍtable = Collection

ㆍrow = JSON Document

ㆍcolumn = JSON field

ㆍprimary key = _id field

ㆍgroup by = aggregation

 

 

 

mongoose

: nodeJS에서 MongoDB를 사용할 수 있도록 지원하는 확장모듈 (ODM)

※ ODM (Object Document Mapping)

: document를 객체로 변환하는 역할의 모듈

 

 

mongoose의 특징

: 데이터 관리를 위해 스키마를 만들고 스키마로 모델을 만듦

: 모델을 통해 데이터를 객체화 시켜 데이터에 대한 접근 제공

 

mongoose 예제

var mongoose = require('mongoose');
var connection1 = mongoose.createConnection('mongodb://localhost/mydb1');
var connection2 = mongoose.createConnection('mongodb://localhost/mydb2');

// 스키마 정의
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)
// 하나의 데이터만 검색
Model.findOne(query, fields, options, callback)


// some Document의 value filed가 5인 데이터에서 first field와 last field를 검색
Model.find({'some.value':5}, ['first','last'], function(err, docs){
            // 콜백 함수의 내용
});


// 새로운 Document 생성
var article = new ArticleModel({title: "Title", body: "Contents"});
article.date = new Date();
article.save(function (err) {
    if(err) {
        return handleError(err);
    }
            // save() 성공 후 수행할 내용
});



// Document 삭제
ArticleModel.remove({title: "Title"}, function(err){
    if(err){
        return handleError(err);
    }
            // remove() 성공후 수행할 내용
})

 

 

Refference

 

구름EDU - 모두를 위한 맞춤형 IT교육

구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/

edu.goorm.io

 

300x250
728x90