JavaScript代码操作mongoDB数据库(使用Mongoose连接mongoDB数据库,进行增删改查操作)

创建文件夹(node.js环境下)
初始化包

npm init -y

下载mongoose

cnpm install mongoose

创建一个文件(db.js),并写入代码:

db.js文件:

// 引入
const mongoose=require('mongoose');

// 链接数据库
mongoose.connect('mongodb://localhost/cc');

// 数据库链接成功,执行下面的箭头函数
mongoose.connection.on('connected',()=> console.log('连接成功'));
// 数据库链接失败,执行下面的箭头函数,打印错误信息
mongoose.connection.on('error',(err)=> console.log(err));

// 上面链接数据库的代码只需要执行一次

右键----run code----链接成功:

E:\VSCode>node "e:\VSCode\Nodejs\24-Day10\02-mongooseDemo\db.js"
(node:7096) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to
MongoClient.connect.
(node:7096) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
连接成功
  • Schema:Mongoose中的所有内容都以Schoma开头。每个Schema都映射到MongoDB集合,并定义该集合中的文档的结构
  • Model:由Schema生成的模型,其实例称为Document。一般用来负责从MongoDB查询文档,修改文档,删除文档
  • Document:Mongoose中Document与存储在MongoDB中的文档的一对一映射。每个文档都是其模型的一个实例。一般用来负责MongoDB保存文档
  • Schema类型:String、Number、Date…

student.js文件:

require('./db');

const mongoose=require('mongoose');
const Schema=mongoose.Schema;

// 定义集合里面的字段以及字段类型
let StudentSchema=new Schema({
     
    name: String,
    age: Number,
    score: Number
});

// 定义Model
// 参数1:对应的数据库中的集合名称,会自动加上s。如果没有这个数据库集合会自动创建。
// 参数2:Schema,用来封装查询的结果。
let Student=mongoose.model('student',StudentSchema);

// 暴露出去,给别的地方使用,避免重复定义
module.exports=Student;

studentService.js文件:

const Student = require('./students');

// 保存学生
function insert() {
     
    // 根据Model 创建 Document 对象
    let student = new Student({
     
        name: 'cc',
        age: 22,
        score: 100
    });

    student.save((err, doc) => {
     
        if (err) {
     
            console.log(err);
        } else {
     
            console.log(doc);
        }
    });
}
insert();

运行成功,在数据库里刷新就可以看到插入了新的数据了

其他:

根据id修改:

// 根据id修改
function updateById() {
     
    let id = '5f59d32af7e2621b3c01eae7';
    let update = {
      name: 'xx', age: 18 };
    Student.findByIdAndUpdate(id, update, (err, res) => {
     
        if (err) {
     
            console.log(err);
        } else {
     
            console.log(res);//返回修改前的数据
        }
    });
}
updateById();

根据条件修改:

// 根据条件修改
function updateByName() {
     
    let conditions = {
      name: 'xx' };
    let update = {
      name: '逍遥', age: 22 };
    let options = {
      multi: true }
    Student.update(conditions, update, options, (err, res) => {
     
        if (err) {
     
            console.log(err);
        } else {
     
            console.log(res);
        }
    });
}
updateByName();

根据id删除:

// 根据id删除
function removeById() {
     
    let id = '5f59d32af7e2621b3c01eae7';
    Student.findByIdAndRemove(id, (err, res) => {
     
        if (err) {
     
            console.log(err);
        } else {
     
            console.log(res);
        }
    });
}
removeById();

根据id查询文档:

// 根据id查询文档
function findById() {
     
    let id = '5f59815c0707eefefb7fd692';
    Student.findById(id, (err, res) => {
     
        if (err) {
     
            console.log(err);
        } else {
     
            console.log(res);
        }
    });
}
findById();

查询所有的:

// 查询所有的
function findAll() {
     
    let conditions = {
     };
    // Student.find(conditions,(err,res)=>{
     
    //     if(err){
     
    //         console.log(err);
    //     }else{
     
    //         console.log(res);
    //     }
    // });


    Student.find(conditions)
        .exec((err, res) => {
     
            if (err) {
     
                console.log(err);
            } else {
     
                console.log(res);
            }
        });
}
findAll();

根据分数范围查询:

// 根据分数范围查询:
function findByMinScoreAndMaxScore() {
     
    let minScore = 90;
    let maxScore = 99;
    let conditions = {
      score: {
      $gte: minScore, $lte: maxScore } };

    Student.find(conditions, (err, res) => {
     
        if (err) {
     
            console.log(err);
        } else {
     
            console.log(res);
        }
    });
}
findByMinScoreAndMaxScore();

名字模糊匹配有r的:

// 名字模糊匹配有r的
function findLikeName(){
     
    let conditions = {
      name:{
     $regex:/r/i} };

    Student.find(conditions, (err, res) => {
     
        if (err) {
     
            console.log(err);
        } else {
     
            console.log(res);
        }
    });
}
findLikeName();

查分数在90-100,名字有‘二’字的:

// 查分数在90-100,名字有‘二’字的
function findPerson(){
     
    let conditions = {
     score:{
     $gte:90,$lte:100}, name:{
     $regex:/二/i} };

    Student.find(conditions, (err, res) => {
     
        if (err) {
     
            console.log(err);
        } else {
     
            console.log(res);
        }
    });
}
findPerson();

分页查询:

// 分页查询
function page(){
     
    let currentPage=2;
    let pageSize=2;
    let sorts={
     score:-1};//降序
    let condition={
     };//条件

    Student.find(condition).sort(sorts).skip((currentPage-1)*pageSize).limit(pageSize)
        .exec((err, res) => {
     
            if (err) {
     
                console.log(err);
            } else {
     
                console.log(res);
            }
        });
}
page();

你可能感兴趣的:(数据库,Node,JavaScript,mongodb,javascript,node.js)