mongoose-面向對象操做mongodb的Nodejs框架

介紹

不管是mysql仍是mongodb,傳統的與數據庫交互的方式都是按照他們提供的API來寫代碼。它們提供的API每每不是很容易理解,並且難以記憶,若是傳錯了參數,寫錯一個符號都要查文檔。javascript

ORM(對象關係映射,Object Relational Mapping)框架,容許咱們面向對象操做,不須要記憶任何的數據庫API,只須要操做對象便可,由框架底層去調用數據庫API,這樣就大大提升了程序員的開發效率。html

不過既然多了一層封裝,確定要損失一點點的性能,能夠忽略不計。java

在NodeJS中,操做mongodb最好的ORM框架就是mongoosenode

安裝mongoose

npm install mongoose --save

若是你本機沒有安裝nodejs驅動,會自動安裝nodejs驅動,由於mongoose依賴nodejs驅動。mysql

文檔參考:mongoose官方文檔http://mongoosejs.com/docs/index.htmlgit

鏈接數據庫

'use strict'
let User = require('./model/user');
let mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1/test");

let db = mongoose.connection;
// 監聽錯誤的事件
db.on('error', err => {
    console.log(err);
});

db.once('open', () => {
    console.log('mongodb connect successfully!');
    highOrderQuery()
});

模型定義

mongoose使用schema來描述數據的格式、字段、規則,有了schema以後能夠生成model來操做數據。程序員

通常咱們新建一個model目錄來存放這些模型文件,好比這裏咱們新建一個model/user.jsgithub

'use strict'
let mongoose = require('mongoose');
let schema = mongoose.Schema({
    nameString,
    ageNumber,
    addressString,
    fav: [String]
}, {
    versionKeyfalse
}
);

module.exports = mongoose.model("users", schema);

增刪改查

直接查看文檔中Model相關API。web

async function testCRUD({
    //增
    let arr = [
        {
            name"李連杰"age50address"北京"fav: ["功夫""演電影""旅遊"]
        },
        {
            name"吳京"age48address"北京"fav: ["功夫""演電視劇""運動"]
        },
    ];
    let res = await User.create(arr);
    console.log(res);

    //查
    let res = await User.findOne({address"北京"}); //查詢出符合條件的第一個文檔
    console.log(res);
    let res = await User.find({address"北京"}); // 查詢出符合條件的全部文檔
    console.log(res);

    //改
    let res = await User.updateOne({_id"5b4065e548651d0b7035843d"}, {age11address"深圳"});
    console.log(res);

    //刪
    let res = await User.deleteOne({_id"5b4065e548651d0b7035843d"});
    console.log(res);
}

高級查詢

全部條件操做符:https://docs.mongodb.com/manual/reference/operator/query/sql

async function highOrderQuery({
    //條件查詢
    let res = await User.find({age: {$gt15}});

    //數組查詢
    let res = await User.find({
        fav"玩遊戲"
    });

    //分頁查詢
    // sort({age:1}) : 1(默認)是從小到大,-1是從大到小
    // sort("-age") :能夠直接寫`-`,表示從大到小
    // select("")只選擇某個或某幾個字段;select("-fav")不選某個字段
    let res = await User.find().skip(0).limit(2).sort("-age").select("-fav"); 

    console.log(res);
}

參考

  • 黑馬程序員 120天全棧區塊鏈開發 開源教程

    https://github.com/itheima1/BlockChain

一番霧語:操做mongodb最好的NodeJS框架。


免費知識星球:一番碼客-積累交流
微信公衆號:一番碼客
微信:Efon-fighting
網站:http://www.efonmark.com
相關文章
相關標籤/搜索