资讯专栏INFORMATION COLUMN

mongoose 链接数据库,增删改查

shleyZ / 2293人阅读

摘要:根据个人编码习惯,仅供参考如中途看的有点蒙圈,可以转到官网查看引入模块连接数据库链接状态数据库链接成功为了查看是否链接成功所以做一个回调创建模式对象例将赋值给变量创建对象官网创建通过来创建代表的是数据库中的集合,通过才能对数据库进行操作可在

根据个人编码习惯,仅供参考

如中途看的有点蒙圈,可以转到官网查看

引入模块
var mongoose = require("mongoose");
连接数据库
mongoose.connect("mongodb://localhost/mongoose_test");    
链接状态
mongoose.connection.once("open",function () {
    console.log("数据库链接成功");
});  

为了查看是否链接成功所以做一个回调

创建Schema(模式)对象

例:

var Schema = mongoose.Schema; //将mongoose.Schema 赋值给变量
//创建Schema对象
var stuSchema = new Schema({
    name:String,
    age:Number,
    gender:{
        type:String,
        default:"female"
    },
    address:String
});

官网:

创建Model 通过Schema来创建Model

Model代表的是数据库中的集合 ,通过Model 才能对数据库进行操作,可在官网查看

语法:

mongoose.model(modelName, schema);
参数:modelName:要映射的集合名
特点:mongoose:会自动将集合名变成复数  

例:

var StuModel = mongoose.model("student", stuSchema);
增加(向数据库插入文档)

语法:

Model.create(doc(s),[callback]);//用来创建一个文档并添加到数据库中

参数:

dec(s) 可以是一个文档对象也是可以是一个文档对象的数组

[callback] 可选的 回调函数

例:

StuModel.create({
    name:"白骨精",
    age:16,
    address:"白骨洞"
},function (err) {
    if(!err){
        console.log("插入成功");
    }
}); 
查询

语法:

Model.find(conditions,[projection],[options],[callback]);//查询所有符合条件的文档  总会返回一个数组 
Model.findById(id,[projection],[options],[callback]);//根据文档的id属性查询文档
Model.findOne([conditions],[projection],[options],[callback]);//查询符合条件的第一个文档 总是返回一个具体的文档对象

参数:

conditions 查询条件

projection 投影(需要获取到的字段)

第一种方式 {name:1,_id:0}

第二种方式 "name -_id"

options 查询的选项(skip limit

callback 回调函数 查询结果通过回调函数返回 回调函数必传 如果不传回调函数 压根就不会查询

例:

StuModel.find({name:"唐僧"},function (err,docs) {
   if(!err){
       console.log(docs[0].name);
   }
});
StuModel.find({},{name:1, _id:0},function (err,docs) {
    if(!err){
        console.log(docs);
    }
});
StuModel.findById("5bac79be5fb5454418668515",function (err,doc) {
    if(!err){
        //通过find()查询的结果 返回的对象就是 Document 文档对象
        //Document 对象是Model的实例
        console.log(doc instanceof StuModel)
    }
});
修改

语法:

Model.update(conditions,doc,[options],[callback]);//用来修改一个或者多个文档
Model.updateMany(conditions,doc,[options],[callback]);//用来修改多个文档
Model.updateOne(conditions,doc,[options],[callback]);//用来修改一个文档
Model.replaceOne(conditions,doc,[options],[callback]);//替换一个

参数:

conditions 查询条件

doc 修改后的对象

options 配置参数

callback 回调函数

删除

语法:

Model.remove(conditions,[callback]);//删除一个或者多个
Model.deleteOne(conditions,[callback]);//删除一个
Model.deleteMany(conditions,[callback]);//删除多个

例:

StuModel.remove({name:"白骨精"},function (err) {
    if(!err){
        console.log("删除成功");
    }
})
统计文档数量

语法:

Model.count(conditions,[callback])

例:

StuModel.count({},function (err,count) {
    if(!err){
        console.log(count);
    }
});   
Document方法

Document 和 集合中的文档一一对应 Document 是Model 的实例,通过Model查询到结果都是Document

创建一个Document
var stu = new StuModel({
    name:"蘇小小",
    age:22,
    gender:"male",
    address:"上海"
});
Document 的方法

语法:

 Model#save([options],[fn]);

例:

stu.save(function (err) {
    if(!err){
        console.log("保存成功")
    }
});   
修改,删除

语法:

修改对象: update(update,[options],[callback]);
删除对象: remove([callback]);   

例:

StuModel.findOne({},function (err,doc) {
    if(!err){
        /**
         * update(update,[options],[callback])
             * - 修改对象
         * remove([callback])
         *      - 删除对象
         */
       // console.log(doc);
       //  doc.update({$set:{age:28}},function (err) {
       //      if(!err){
       //          console.log("修改成功");
       //      }
       //  })
        /**
         * 或者
         */
        // doc.age = 18;
        // doc.save();
        
        
        
        // doc.remove(function (err) {
        //     if(!err){
        //         console.log("大师兄再见");
        //     }
        // })


        /**
         * get()
         *  - 获取文档中的指定属性值
         * set(name,value)
         *  - 设置文档的指定属性值
         *  id
         *     - 获取文档的_id属性值
         *  toJSON()
         *      - 转换为一个json对象
         *  toObject()
         *      - 将Document 对象转换为一个普通的js对象,注意所有的Document对象的方法或属性都不能使用了
         */

        //console.log(doc.get("name"))
        /**
         * 或
         */
        // console.log(doc.name)


        //doc.set("name","猪无能");
        /**
         * 或
         */
      //  doc.name = "天蓬元帅";

        // console.log(doc._id);
        // var j = doc.toJSON();
        // console.log(typeof j);
        var o =doc.toObject()
        console.log(o)

    }
});
模块化
新建一个js文件,用来连接数据库
/**
 *定义一个模块,用来连接mongodb数据库
 */
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/mongoose_test");
mongoose.connection.once("open",function () {
    console.log("数据库链接成功");
});
-------------------------------------------------------------------
在新建一个js文件,用来创建student模型
/**
 *用来定义student模型
 */
var mongoose = require("mongoose");

var Schema = mongoose.Schema;

var stuSchema = new Schema({
    name:String,
    age:Number,
    gender:{
        type:String,
        default:"female"
    },
    address:String

});
/**
 *定义模型
 */
var StuModel = mongoose.model("student", stuSchema);

/**
 * 暴露出去
 */
module.exports = StuModel;
----------------------------------------------------------------
在需要调用的地方引入就可以了
/**
 *定义一个模块,用来连接mongodb数据库
 */
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/mongoose_test");
mongoose.connection.once("open",function () {
    console.log("数据库链接成功");
});


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38866.html

相关文章

  • mongoose 链接据库删改

    摘要:根据个人编码习惯,仅供参考如中途看的有点蒙圈,可以转到官网查看引入模块连接数据库链接状态数据库链接成功为了查看是否链接成功所以做一个回调创建模式对象例将赋值给变量创建对象官网创建通过来创建代表的是数据库中的集合,通过才能对数据库进行操作可在 根据个人编码习惯,仅供参考 如中途看的有点蒙圈,可以转到官网查看 引入模块 var mongoose = require(mongoose); ...

    lanffy 评论0 收藏0
  • 使用express+mongoose对mongodb实现删改操作

    摘要:项目地址写在开头本文主要分享我如何使用对实现增删改查操作,感谢社区所有精品文章的帮助,以及的开源项目对我的启发。我们这个项目是建立一个班级学生管理系统,能够对学生的姓名及学号进行增删改查的操作。 项目地址:https://github.com/jrainlau/mongoose_cru... 写在开头 本文主要分享我如何使用express+mongoose对mongodb实现增删改查...

    Markxu 评论0 收藏0
  • node express mongoose简单实现全栈之删改

    摘要:作为一个有志向的前端,怎么能不搞搞全栈呢。。。地址欢迎大家多多交流前端技术啊,如果大家喜欢的话,请给我一个小小的哦 作为一个有志向的前端,怎么能不搞搞全(zhuang)栈(bi)呢。。。说搞咱就搞啊,后端就用node,数据库就用mongodb,前端呢,呃,再搞个node的web框架express,思路搞定,开始搭建我们的环境,搭建之前还是先看看我们的目标和成果 项目的目标和成果 sh...

    AndroidTraveler 评论0 收藏0
  • 使用 mongoose 操作 mongodb 删改

    摘要:使用操作的测试文件连接数据库引入连接指定的数据库只有数据库是变化的获取连接对象绑定连接完成的监听用来提示连接成功得到对应特定集合的字义描述文档结构定义与集合对应,可以操作集合通过或其实例对集合数据进行操作通过实例的添加数据通过的查询多个或一 使用 mongoose 操作 mongodb 的测试文件 连接数据库1.1 引入 mongoose1.2 连接指定的数据库(URL 只有数据库是...

    renweihub 评论0 收藏0
  • mongoDB初阶系列三:mongoose

    摘要:前言上篇初阶系列二中的增删改查中讲解了用驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用更顺畅的操控。查下面这段代码对集合进行搜索,并输出每项任务的唯一和描述,等打印完成后,关闭数据库连接。 前言 上篇 mongoDB初阶系列二:node中的增删改查 中讲解了用node驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用mongoose更顺畅的操...

    Null 评论0 收藏0

发表评论

0条评论

shleyZ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<