데이터베이스 - mongo 사용 자습서

7367 단어
github 주소
카탈로그
  • 설치
  • 시작
  • 운영 단계
  • mongoose
  • 연결/connect
  • 데이터 형식 한정/schema
  • 데이터 모델/model
  • 일반 데이터베이스 작업 - 첨삭/options
  • 증가
  • 삭제
  • 변경

  • 설치하다.
    $ brew install mongodb
    로컬 데이터베이스 시작
    mongod --dbpath="pwd"
    절차
    mongoose
  • 연결 데이터베이스
  • --db.js
    var mongoose = require('mongoose'),
        DB_URL = 'mongodb://localhost:27017/mongoosesample';//mongo  
    
    /**
     *   
     */
    mongoose.connect(DB_URL);
    
    /**
      *     
      */
    mongoose.connection.on('connected', function () {    
        console.log('Mongoose connection open to ' + DB_URL);  
    });    
    
    /**
     *     
     */
    mongoose.connection.on('error',function (err) {    
        console.log('Mongoose connection error: ' + err);  
    });    
    
    /**
     *     
     */
    mongoose.connection.on('disconnected', function () {    
        console.log('Mongoose connection disconnected');  
    });    
    
    
  • schema
  • mongoose에서 사용할 수 있는 데이터 모델로 표 구조의 정의로 이해할 수 있다.모든 schema는 몬godb에 비추는collection입니다. 데이터베이스를 조작하는 능력을 갖추지 못합니다. 우리는db를 개조합시다.js,mongoose 대상 내보내기

  • --db.js
    /**
     * ⤴️
     */
    module.exports = mongoose;
    

    --user.js//다음은 user의 Schema를 사용자 이름으로 정의합니다.js
    /**
     *     
     */
    var mongoose = require('./db.js'),
        Schema = mongoose.Schema;
    
    var UserSchema = new Schema({          
        username : { type: String },                    //    
        userpwd: {type: String},                        //  
        userage: {type: Number},                        //  
        logindate : { type: Date}                       //      
    });
    /*
        Schema     ,        
    
      Schema Types      :
    
      String     
    
      Number   
    
      Boolean | Bool      
    
      Array   
    
      Buffer buffer   
    
      Date   
    
      ObjectId | Oid     
    
      Mixed   
    */
    
  • model
  • 모델은 schema에서 생성된 모델로 데이터베이스에 대한 조작은 위에서 정의한user의 schema에 대해 User의 모델을 생성하여 내보낼 수 있으며 수정 후 코드는 다음과 같다


  • --user.js
    /**
     * ⤴️
     */
    module.exports = mongoose.model('User',UserSchema);
    

    일반적인 데이터베이스 작업 - 첨삭 및 수정
    save
  • Model.save([fn])
  • var UserModel = require("./user.js");
    
    /**
     *   
     */
    function insert() {
    
        var userModel = new UserModel({
            username : 'Tracy McGrady',                 //    
            userpwd: 'abcd',                            //  
            userage: 37,                                //  
            logindate : new Date()                      //      
        });
    
        userModel.save(function (err, res) {
    
            if (err) {
                console.log("Error:" + err);
            }
            else {
                console.log("Res:" + res);
            }
    
        });
    }
    
    insert();
    

    update
  • Model.업데이트(conditions, 업데이트, [options], [callback])//조회 조건, 데이터 교체
  • var UserModel = require("./user.js");
    
    function update(){
        var wherestr = {'username' : 'Tracy McGrady'};
        var updatestr = {'userpwd': 'zzzz'};
    
        UserModel.update(wherestr, updatestr, function(err, res){
            if (err) {
                console.log("Error:" + err);
            }
            else {
                console.log("Res:" + res);
            }
        })
    }
    
    update();
    

    findByIdAndUpdate
  • 자주 사용하는 방법은findByIdAndUpdate도 있는데 이런 비교는 지정성이 있다. 바로id
  • Model.findByIdAndUpdate(id, [update], [options], [callback])/id 업데이트 데이터
  • 추가 업데이트 방법
  • Model.findOneAndUpdate([conditions], [update], [options], [callback])//기록을 찾아서 업데이트
  • var UserModel = require("./user.js");
    
    function findByIdAndUpdate(){
        var id = '56f2558b2dd74855a345edb2';
        var updatestr = {'userpwd': 'abcd'};
    
        UserModel.findByIdAndUpdate(id, updatestr, function(err, res){
            if (err) {
                console.log("Error:" + err);
            }
            else {
                console.log("Res:" + res);
            }
        })
    }
    
    findByIdAndUpdate();
    

    삭제
  • Model.remove(conditions, [callback])
  • 기타 일반적인 방법은 다음과 같습니다.
  • Model.findByIdAndRemove(id, [options], [callback])

  • Model.findOneAndRemove(conditions, [options], [callback])
  • var UserModel = require("./user.js");
    
    function del(){
        var wherestr = {'username' : 'Tracy McGrady'};
    
        UserModel.remove(wherestr, function(err, res){
            if (err) {
                console.log("Error:" + err);
            }
            else {
                console.log("Res:" + res);
            }
        })
    }
    
    del();
    

    조건 조회에 테스트 데이터를 삽입했습니다.
  • Model.find(conditions, [fields], [options], [callback])
  • var UserModel = require("./user.js");
    
    function getByConditions(){
        var wherestr = {'username' : 'Tracy McGrady'};//    
        var opt = {"username": 1 ,"_id": 0};//     1   ,0    
    
        UserModel.find(wherestr, opt ,function(err, res){
            if (err) {
                console.log("Error:" + err);
            }
            else {
                console.log("Res:" + res);
            }
        })
    }
    
    getByConditions();
    

    예를 들어 내가 나이 범위 조건을 조회하려면 어떻게 써야 합니까?
    User.find({userage: {$gte: 21, $lte: 65}}, callback);//이는 조회 연령이 21세 이상이고 65세 이하라는 것을 나타낸다
           : 
    
    $or       
    
    $nor         
    
    $gt      
    
    $gte        
    
    $lt       
    
    $lte         
    
    $ne               
    
    $in                    
    
    $nin                   
    
    $all                    
    
    $regex    ,      
    
    $size         
    
    $maxDistance      ,  (  LBS)
    
    $mod         
    
    $near       ,       (  LBS)
    
    $exists          
    
    $elemMatch           
    
    $within      (  LBS)
    
    $box        ,    (  LBS)
    
    $center           ,    (  LBS)
    
    $centerSphere      ,    (  LBS)
    
    $slice              (        , N  M   )
    
      
    
          ,     ,      api ^_^!  
    

    수량 조회
  • Model.count(conditions, [callback])
  • var UserModel = require("./user.js");
    
    function getCountByConditions(){
        var wherestr = {};
    
        UserModel.count(wherestr, function(err, res){
            if (err) {
                console.log("Error:" + err);
            }
            else {
                console.log("Res:" + res);
            }
        })
    }
    getCountByConditions();
    

    근거id 조회
  • Model.findById(id, [fields], [options], [callback])
  • var UserModel = require("./user.js");
    
    function getById(){
        var id = '56f261fb448779caa359cb73';
    
        UserModel.findById(id, function(err, res){
            if (err) {
                console.log("Error:" + err);
            }
            else {
                console.log("Res:" + res);
            }
        })
    }
    
    getById();
    

    모호한 조회 (정규 일치 조회)
  • 예시에서 모든 사용자 이름에'm'의 이름이 있고 대소문자를 구분하지 않으며 모호한 검색이 자주 사용되고 정규 형식이 일치하며 정규 방식은javascript 정규로 많이 사용된다!
  • var UserModel = require("./user.js");
    
    function getByRegex(){
        var whereStr = {'username':{$regex:/m/i}};//        
    
        UserModel.find(whereStr, function(err, res){
            if (err) {
                console.log("Error:" + err);
            }
            else {
                console.log("Res:" + res);
            }
        })
    }
    
    getByRegex();
    

    좋은 웹페이지 즐겨찾기