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
相关文章
相关标签/搜索