몽구스

Ahn9807 (토론 | 기여)님의 2023년 3월 24일 (금) 11:56 판 (새 문서: 분류:오픈소스 프로젝트 ==개요== 몽구스는 직관적이고 Schema가 중심이 되는 라이브러리로써, MongoDB를 자바스크립트와 연동시켜서, 확실하고 SQL같은 느낌으로 MongoDB를 사용할 수 있게 하는 라이브러리이다. == 사용 방법 == === 패키지 설치 === npm install mongoose === 몽고DB에 연결 === var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true})...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

몽구스는 직관적이고 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) {
});

이와 같이 정보를 저장할 수 있다.

CRUD

Create

  1. save
  2. create
  3. insertMany

Retrieve

  1. find
  2. findById
  3. findOne
  4. where

Update

  1. update

Delete

  1. deleteOne
  2. deleteMany