mongoose入门以及 mongoose 实现数据 的增、删、改、查

  

一、mongoose 介绍

Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具。Mongoose NodeJS 的驱动,不能作为其他语言的驱动。

Mongoose 有两个特点

1、通过关系型数据库的思想来设计非关系型数据库

2、基于 mongodb 驱动,简化操作

二、mongoose 的安装以及使用

官网:https://mongoosejs.com/

1. 安装

npm i mongoose --save

2、引入 mongoose 并连接数据库

const mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); 如果有账户密码需要采用下面的连接方式: 
mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms');

3、定义 Schema

数据库中的 Schema,为数据库对象的集合。schema mongoose 里会用到的一种数据模式, 可以理解为表结构的定义;每个 schema 会映射到 mongodb 中的一个 collection,它不具备操作数据库的能力

var UserSchema=mongoose.Schema({ 
    name: String,
    age:Number,
    status:'number' 
})

4、创建数据模型
定义好了 Schema,接下就是生成 Modelmodel 是由 schema 生成的模型,可以对数据库的
操作。

注意:mongoose.model 里面可以传入两个参数也可以传入三个参数 mongoose.model(参数 1:模型名称(首字母大写),参数 2:Schema)

mongoose.model(参数 1:模型名称(首字母大写),参数 2:Schema,参数 3:数据库集合名 称)

如果传入 2 个参数的话:这个模型会和模型名称相同的复数的数据库建立连接:如通过下面 方法创建模型,那么这个模型将会操作 users 这个集合。

如果传入 3 个参数的话:模型默认操作第三个参数定义的集合名称

var User=mongoose.model('User', UserSchema);

5、查找数据

User.find({},function(err,docs){ 
    if(err){
        console.log(err);
        return; 
    }
    console.log(docs);
 })

6、增加数据

var u=new User({ 
//实例化模型 传入增加的数据
     name:'lisi2222333',
     age:20,
     status:true 
})
u.save();

7、修改数据

User.updateOne({ name: 'lisi2222' }, { name: '哈哈哈' }, function(err, res) {   
    if(err){
        console.log(err);
        return;
     }  
console.log('成功') 
});    

8、删除数据

User.deleteOne({ _id: '5b72ada84e284f0acc8d318a' }, function (err) { 
    if (err) {
        console.log(err);
        return; 
    }
    // deleted at most one tank document
    console.log('成功'); 
});        

9、保存成功查找

var u = new User({
    name: 'lisi2222333',
    age: 20,
    status: true //类型转换
})
u.save(function (err, docs) {
    if (err) {
        console.log(err);
        return;
    }
    console.log(docs);
    User.find({}, function (err, docs) {
        if (err) {
            console.log(err);
            return;
        }
        console.log(docs);
    })
});
原文地址:https://www.cnblogs.com/loaderman/p/11516001.html