zoukankan      html  css  js  c++  java
  • Nosql_Mongoose简介及操作

    Mongoose简介:

    Mongoose是一个让我们通过Node来操作MongoDB的模块,Mongoose是一个对象文档模型库,它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能

    Mongoose优点:

    1、可以为文档创建一个模式结构
    2、可以对模型中的对象/文档进行验证
    3、数据可以通过类型转换转换为对象模型
    4、可以使用中间件来应用业务逻辑挂钩
    5、比Node原生的MongoDB驱动更容易

    Mongoose提供的新对象:

    - Schema(模式对象)
      *Schema对象定义约束了数据库的文档结构

    - Model
      *Model对象作为集合中的所有文档的表示,相当于MongoDB数据库中的集合collection

    - Document
      *Document表示集合中的具体文档,相当于集合中的一个具体的文档

    Mongoose操作步骤:

      1.下载安装Mongoose
    npm i mongoose --save

    2.在项目中引入mongoose
       var mongoose = require("mongoose");
      3.连接MongoDB数据库
    mongoose.connect('mongodb://数据库的ip地址:端口号/数据库名')
    - 如果端口号是默认端口号(27017)则可以省略不写

    4.断开数据库连接(一般不需要调用)
    - MongoDB数据库,一般情况下,只需要连接一次,连接一次以后,除非项目停止服务器关闭,否则连接一般不会断开
          mongoose.disconnect()
        --监听MongoDB数据库的连接状态
    - 在mongoose对象中,有一个属性叫做connection,该对象表示的就是数据库连接
    通过监视该对象的状态,可以来监听数据库的连接与断开

    数据库连接成功的事件:
          mongoose.connection.once("open",function(){});
          数据库断开的事件:
          mongoose.connection.once("close",function(){});
    Schema 和 Model:
    var mongoose = require("mongoose");
    mongoose.connect("mongodb://127.0.0.1/mongoose_test",{useMongoClient:true});
    mongoose.connection.once("open",function () {
      console.log("数据库连接成功~~~");
    });
    //将mongoose.Schema赋值给一个变量
    var Schema = mongoose.Schema;
    
    //创建Schema(模式)对象
    var stuSchema = new Schema({
    
      name:String,
      age:Number,
      gender:{
        type:String,
        default:"female" //指定性别为女
      },
      address:String
    });
    //通过Schema来创建Model
    //Model代表的是数据库的集合,通过Model才能对数据库进行操作
    //mongoose.model(modelName , schema):
    //modelName 就是要映射的集合名mongoose会自动将集合名变成复数
    var StuModel = mongoose.model("student", stuSchema);
    //向数据库中插入一个文档
    //StuModel.create({doc, function(err)});
    StuModel.create({
      name:"孙悟空",
      age:18,
      gender:"male",
      address: "花果山"
    },function (err) {
      if(!err){
        console.log("插入成功~~~");
      }
    
    });
    Document:
     Document的方法:
    get(获取)
    set(设置)
    save(保存)
    update(修改)
    remove(删除)
    //创建一个Document
    var stu = new StuModel({
      name:"奔波霸",
      age:28,
      gender:"male",
      address: "碧波潭"
    });
    stu.save(function (err) {
      if(!err){
        console.log("保存成功~~~");
      }
    });
    StuModel.findOne({},function (err,doc) {
      if(!err){
        /*
        update(update,[options],[callback])
         - 修改对象
        save([callback])
         - 保存对象
        remove([callback])
         - 删除对象
        get(name)
    - 获取文档中的指定属性值

    set(name , value)
    - 设置文档的指定的属性

    id
    - 获取文档的_id的属性值

    toJson
    - 转换为一个JSON对象

    toObject()
    - 将Document对象转换为一个普通的JS对象
    转换为普通的js对象以后,注意所有的Document对象的方法或属性都不能使用
    */ 
    //console.log(doc);
    /*
    doc.update({$set:{age:28}},
    function (err) {
    if(!err){
    console.log("修改成功~~~");
    } });

    */

    /*

    doc.remote(
    function (err) {
    if(!err){
    console.log("大师兄再见~~~");
    } });
    */
     
    //console.log(doc.get("age"));
    //console.log(doc.age);

    //doc.set("name","猪小小");
    //doc.name = "hahaha";

    //console.log(doc._id);

    //var o = doc.toObject();
    //console.log(o);
    } });

    补充:

    定义一个模块,用来连接MongoDB数据库
    //mongo.js内容:
    var mongoose = require("mongoose");
    mongoose.connect("mongodb://127.0.0.1/mongoose_test",{useMongoClient:true});
    mongoose.connection.once("open",function () {
      console.log("数据库连接成功~~~");
    });
    //index.js内容:
      require("./tools/mongo");
      <直接调用mongo.js里的内容,方便连接上数据库>


    我是一个刚刚开始写博客的大可,内容有不详细或是错误的,还希望各位大佬私信我,我会进行纠正,谢谢啦!^-^
  • 相关阅读:
    Linux LAMP架构搭建
    Linux 系统版本查询
    Linux 安装本地 yum源
    Linux 虚拟机安装vmware tools
    随记分页码
    flexigrid 修改json格式
    Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
    web api 文档声明
    android UI
    Sending HTML Form Data
  • 原文地址:https://www.cnblogs.com/sunjiaojiao/p/11188802.html
Copyright © 2011-2022 走看看