mongoDB - Query, express.js 적용

ryan·2022년 5월 13일
0

Query

  • MongoDB에도 sql의 where과 유사한 조건절 사용 가능
    - query는 비동기적으로 처리해야 한다.
    - MongoDB의 QUERY는 BSON형식으로, 기본 문법 그대로 mongoose에서 사용 가능

예제

Person.find({
    name:'nice', // exact match name이 'nice' person 데이터
    age:{
        $lt:20,
        $gte:10,
    },
    Language:{
        $in:['ko','en'], // 'ko','en' 둘 중에 하나를 가지고 있는 사람을 찾는다는 의미
    },
    // 여기를 기준으로 위 조건은 &&로 묶임
    $or:[ // $or는 조건을 ||로 묶음
        {status:'ACTIVE'},
        {isFresh:true}
 //- $exists를 사용하여 속성이 있는지 없는지를 확인할 수 있음
 // {
 // status: { $exists: false },
 //}
    ],
 
});
  • {key:value}로 exact match 가능
  • $lt, $lte, $gt, $gte를 사용하여 range query 작성 가능(less than, greater than...)
  • $in을 사용하여 다중 값으로 검색
  • $or를 사용하여 다중 조건 검색
  • $in의 경우 mongoose에서 쿼리 값으로 '배열'이 주어지면 자동으로 $in 쿼리를 생성해줌
  • 또한 MongoDB에서 Document의 속성 유무를 체크하기 위해 $exists operator를 사용할 수 있음.

express.js에 Mongoose ODM 사용하기

  • express.js는 프로젝트 구조를 자유롭게 구성할 수 있기 때문에 어느 부분에 Mongoose ODM을 위치시키면 좋을지 적절한 위치를 결정하는 것이 중요
  • 일반적으로 models 디렉터리에 schema와 model을 같이 위치
  • app 객체는 어플리케이션 시작을 의미하는 부분이므로
  • 해당 부분에 데이터베이스 연결을 명시하는 mongoose.connect를 위치

mongoose ODM 커넥션 이벤트

  • express.js 어플리케이션은 종료되지 않고 동작하기 때문에 계속해서 데이터베이스가 정상적으로 동작하는지를 파악하기 위해 동작 중에 발생하는 데이터베이스 연결 관련 이벤트에 대한 처리를 하는 것이 좋음
mongoose.connect('url');
mongoose.connection.on('connected',()=>{}) // 연결 완료
mongoose.connection.on('disconnected',()=>{}) // 연결이 끊김
mongoose.connection.on('reconnected',()=>{}) // 재연결 완료
mongoose.connection.on('reconnectedFailed',()=>{}) // 재연결 시도 횟수 초과

예제

index.js (실행 파일)
const express = require('express');
const mongoose = require('mongoose');
const postsRouter = require('./routes/posts');

const app = express();

mongoose.connect('mongodb://localhost:27017/exam_7');

mongoose.connection.on('connected', () => {
  console.log('Successfully connected to MongoDB');
});

app.get('/', (req, res) => {
  res.send('OK');
});

app.use('/posts', postsRouter);

app.listen(8080);
profile
프론트엔드 개발자

0개의 댓글