node.js连接mongoDB

作者: 马大哈tt | 来源:发表于2018-01-24 21:27 被阅读0次

    在node.js中使用mongoDB需要在项目中安装mongoose模块,安装命令:npm install mongoose;对于mongoDB的操作我就不介绍了,大家感兴趣可以看我上篇博客:https://www.jianshu.com/p/dd70199063a4
    接下来分享一下node中对mongoDB的操作

    连接数据库

    当能打印数据库连接成功字符,便是连接成功了

    mongoose.connect("mongodb://localhost:27017/users");
    var db = mongoose.connection;
    db.on("error",function (error) {
        if(error){
            return console.log(error);
        }
    });
    db.on("open",function () {
        console.log("数据库连接成功");
    });
    

    Schema骨架

    • Schema: 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
    • Model: 由Schema发布生成的模型,具有抽象属性和数据库操作能力
      每一个 Schema 对应 MongoDB 中的一个集合(collection),Schema 中定义了集合中文档的样式。
      下面设置了集合users的基本样式,type是字段类型
    var Schema = mongoose.Schema({
        name:{type:String,default:11},
        age:{type:Number},
        hobby:{hobby1:{type:String},hobby2:{type:String}}
    },{collection:'person'});
    var Model = db.model("person",Schema);
    

    操作数据库

    1. 查询所有年龄小于30的名字
      参数一:查询条件
      参数二:查询内容
      参数三:对调函数,返回的数据为数组对象形式
    Model.find({age:{$lt:30}},{name:1},function (err,data) {
        if(err){
            return console.log(err);
        }else{
            console.log(data);
        }
    })
    

    返回的data为数组对象


    82BE35246BEAF980CB6B160F2530F877.png

    这里支持es6的promise写法

    Model.find({age:{$gt:30}},null).then((data) => {
        console.log(data);
    }).catch((err)=>{
        return console.log(err);
    });
    
    1. 添加数据
      使用create方法,返回的的data为添加的数据
      添加一条姓名为『周宏伟』,年龄为52的数据
    Model.create({name:"周宏伟",age:52},function (err,data) {
        if(err){
            return console.log(err);
        }else{
            console.log(data);
        }
    });
    

    注意下图的数据中多一个 __v:0 字段,它代表是由node.js操作添加的数据


    A5505778A0B3CEDA885D3C1CC4D5BF96.png
    1. 更新数据
      使用update方法,返回的是更新成功或者失败的状态
    Model.update({name:'李刚'},{$set:{age:35}},{multi:true},function (err,data) {
        if(err){
            console.log(err);
        }else{
            console.log(data);
        }
    });
    

    ok:参数值为1表示更新成功;0表示更新失败


    E6EE8C5091C7B4CB73E50AA0FEE6549D.png
    1. 删除数据
      返回的data与上面update相似
    Model.remove({name:'马云'},function (err,data) {
        if(err){
            console.log(err);
        }else {
            console.log(data);
        }
    });
    
    1. 游标操作
      sort参数值:1代表正序;-1代表倒序;
      以年龄倒序排序
    Model.find({},{},{sort:{age:-1}},function (err,data) {
        if(err){
            console.log(err);
        }else {
            console.log(data);
        }
    });
    

    相关文章

      网友评论

        本文标题:node.js连接mongoDB

        本文链接:https://www.haomeiwen.com/subject/pblpaxtx.html