개요
몽구스는 직관적이고 Schema가 중심이 되는 라이브러리로써, MongoDB를 자바스크립트와 연동시켜서, 확실하고 SQL같은 느낌으로 MongoDB를 사용할 수 있게 하는 라이브러리이다.
사용 방법
패키지 설치
npm install mongoose
몽고DB에 연결
var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true});
혹은 여러가지 설정할 것이 있으면
mongoose.connect('mongodb://username:password@host:port/database?options...');
몽고 디비가 연결된후 실행할 항목은
var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() { // we're connected! });
스키마의 설정
몽구스는 스키마(Schema)란 정의된 모델에서 데이터의 쿼리를 담당한다 이는 noSQL인 몽고DB의 한계를 보완하는 역활을 한다.
var blogSchema = new Schema({ title: String, // String is shorthand for {type: String} author: String, body: String, comments: [{ body: String, date: Date }], date: { type: Date, default: Date.now }, hidden: Boolean, meta: { votes: Number, favs: Number }, array: [Number] });
몽구스의 스키마는 다음과 같이 주어진다. String, Number, Date, Buffer, Boolean, Mixed, ObjectID, Array, Decimal128, Map.
모델의 설정
모델은 스키마를 객체화 한 것으로, 도큐먼트라 불리는 레벨에서 몽고DB를 조정한다.
var Tank = mongoose.model('Tank', schema);
라 하면, 몽구스는 자동으로 복수형이고, 모두 lowercased된 컬렉션이 DB에 존재하는지 확인하고 있으면 그 컬렉션을 model에 연결하며 없으면 컬렉션을 새로 DB에 생성한다. 만약 컬렉션 이름을 내가 원하는 대로 만들고 싶으면 다음과 같이 해주어야 한다.
var dataSchema = new Schema({..}, { collection: 'COLLECTION_NAME' })
모델을 만들면
var Tank = mongoose.model('Tank', yourSchema);
var small = new Tank({ size: 'small' }); small.save(function (err) { if (err) return handleError(err); // saved! });
// or
Tank.create({ size: 'small' }, function (err, small) { if (err) return handleError(err); // saved! });
// or, for inserting large batches of documents Tank.insertMany([{ size: 'small' }], function(err) {
});
이와 같이 정보를 저장할 수 있다.