mongoose使用

作者: 夏夏夏夏顿天 | 来源:发表于2018-11-09 16:38 被阅读13次

    在node中使用MongoDB很多情况下,都是使用mongoose的,所以这集来介绍一下

    安装

    yarn add mongoose
    

    连接

    const mongoose = require("mongoose");
    mongoose.connect('mongodb://localhost/my_database');
    

    建立schema 和model

    shema 相当于对表结构的定义
    model 定义表

    其实,在MongoDB中不能称为表,应该为文档

    shema

    const mongoose = require('mongoose');
    
    mongoose.connect('mongodb://localhost/my_database');
    
    const {Schema} = mongoose;
    //  用户对象模型
    const userSchema = new Schema({
      name: {
        type: String, //类型
        default: Date.now // 默认值
      },
      avatar: {
            type: String,
            required: true //必须有值
      },
      user: String, 
      passworld: String,
      hash: String, 
      score: Number, 
      learn: Array, 
      message: Array, 
      star: Array, 
      sign: Array,
      signdate: String, 
      isregister: Boolean, 
    });
    

    Model

    Model是由Schema编译而成的假想(fancy)构造器,具有抽象属性和行为。Model的每一个实例(instance)就是一个document。document可以保存到数据库和对数据库进行操作。

    //创建并导出model
    const db= {
      User: mongoose.model('MUser', muserSchema),
    };
    module.exports = db;
    

    现在我们就完成了mongodb的数据连接,数据对象模型的创建。

    mongoose常用的API

    save是一个实例方法,使用时需要先 new Model() 来实例化

    //保存一个用户信息,userobj为你创建的文档对象模型里的字段,需正确对应传入
    const userobj={
        email: query,
        passworld: req.body.passworld,
        hash: hash,
        isregister: false,
        score: 5,
        sign: [],
        signdate: ''
    }
    new db.MUser(userobj).save(function(error){
        if (error) {
            res.status(500).send()
            return
        }
        res.json({statu: 200})
    })
    

    remove
    删除数据方法

    db.Course.remove({_id: req.body.id}, function(err, docs){
        if (err) {
                res.status(500).send();
                return
        }
        res.json({statu: 200})
    })
    

    update
    更新数据方法

    // 更新指定email字段数据条目下字段为content的内容,如果不存在就创建该字段
    db.Share.update({email: email},{$set:{content: newarr}}, function(err, docs){
        if (err) {
                res.status(500).send();
                return
        }
        res.json({statu: 200});
    })
    
    //$set 指定字段的值,这个字段不存在就创建它。可以是任何MondoDB支持的类型。
    Article.update({_id : id}, {$set : {views : 51, title : ‘修改后的标题’ …}})
    
    //$unset 同上取反,删除一个字段
    Article.update({views : 50}, {$unset : {views : ‘remove’}})
    //执行后: views字段不存在
    
    //$inc 增减修改器,只对数字有效。
    Article.update({_id : id}, {$inc : {views : 1}})
    
    //$push 为字段为数组的内容push数据
    Article.update({_id : id}, {$push : {message : messageobj}})
    
    //$pop从头部或尾部删除单个元素(1为从后面删除,-1为从前面删除)
    db.Article.update(({_id: id), {$pop:{relationships: -1})
    
    

    1.find

    find用来查询并输出该条件下的所有文档
    db.Userl.find({conditions}, {options}, callback)
    conditions Object类型 //查询条件
    options Object 类型 //查询配置参数
    callback Function //回调

    参考:
    https://segmentfault.com/a/1190000015059049
    超详细的数据库mongoose的使用方法/教程
    Nodejs学习笔记(十四)— Mongoose介绍和入门

    相关文章

      网友评论

        本文标题:mongoose使用

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