Yiksan0315's Blog

mongo-basic

# Tag:


Mongo DB 사용법

1. Mongo DB 개요

NoSQL 데이터베이스.
단순한 키와 값의 쌍으로 이루어지며 인덱 스와 데이터는 분리되어 별도로 운영된다.

특징

  • Join이 없으므로 Join이 필요 없도록 데이터 구조화가 필요
  • 다양한 종류의 쿼리문을 지원(필터링, 수집, 정렬, 정규표현식 등)
  • 관리의 편의성
  • 스키마 없는(Schemaless) 데이터베이스를 이용한 신속 개발. 필드를 추가하거나 제거하는 것이 매우 쉬워짐
  • 쉬운 수평 확장성
  • 인덱싱 제공

2. Mongoose

1. Mongo DB - mongoose

MongoDB를 nodejs에서 사용하기 위한 라이브러리.

mongoose.connect( "mongodb+srv://[Atlas 주소 붙여넣고 패스워드 수정, 클러스터 이름 수정]", { useNewUrlParser: true } ); // db에 연결 var db = mongoose.connection; // db 객체 받아오기 db.on("error", console.error.bind(console, "connection error:")); // error 처리 db.once("open", () => { console.log("DB connected"); }); // db 열기

2. Mongoose Achitectrue

MongoDB 용어 및 개념
![[attachments/Mongo-Words.png]]

  • 모델
    mongoDB에서 데이터를 저장하는 기본 단위인 도큐먼트의 형태를 의미.
    mongoose에서 제공하는 Schema 인터페이스를 통해 생성 가능.
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 실행 후 콜백 함수의 내용 });

3. MongoDB methods

  • 검색하기
    각각 검색 질의문, 출력하고자 하는 필드, 옵션, 그리고 콜백 함수
    docs 는 검색된 모든 도큐먼트를 담고있는 배열.
Model.find(query, fields, options, callback); //fields 값을 각각 변수에 0으로 설정하면 보이지 않고, 1로 설정하면 보인다. Model.find({ "some.value": 5 }, function (err, docs) { // 콜백 함수의 내용 }); // 오직 하나의 도큐먼트만 전달됨. Model.findOne({ age: 5 }, function (err, doc) { // 콜백 함수의 내용 }); //_id 값을 이용하여 검색, 하나만 넘어옴 Model.findById(obj._id, function (err, doc) { // 콜백 함수의 내용 });
  • 도큐먼트 추가
    save 메소드 이용
//모델을 이용하여 바로 추가하는 방법 ArticleModel.create( { title: "Title", body: "Contents", date: new Date() }, function (err) { if (err) { return handleError(err); } // save() 성공 후 수행할 내용 } );
  • 도큐먼트 삭제
//특정 조건에 맞는 도큐먼트 삭제 ArticleModel.remove({ title: "Title" }, function (err) { if (err) { return handleError(err); } // remove() 성공후 수행할 내용 });

mongoDB 3.2 버전부터는 remove메소드에서 좀 더 세분화된 deleteOne, deleteMany가 추가되면서 remove 대신 이 두 메소드를 사용하는 것을 권장

memoModel.deleteOne({ _id: _id }, function (err, result) { if (err) { throw err; } else { res.json({ status: "SUCCESS" }); } });
toc test

이 페이지는 리디주식회사에서 제공한 리디바탕 글꼴이 사용되어 있습니다. 리디바탕의 저작권은 리디주식회사가 소유하고 있습니다.

This Font Software is licensed under the SIL Open Font License, Version 1.1.

Copyright 2025. yiksan0315 All rights reserved.