zoukankan      html  css  js  c++  java
  • node18---Mongoose

    二、索引index
    数据库中,根据一个字段的值,来寻找一个文档,是很常见的操作。比如根据学号来找一个学生。
    这个学号,是唯一的,只要有学号,就能唯一确认一个学生的文档。学号这个属性,就非常适合建立索引,这样一来,查找学生就变得简单了。
    
    这个语句,能够查看检索的过程:
    1db.student.find({"name":"user888"});
    
    学生的姓名是唯一的,为了快速的进行检索,所以就把name属性建立成为“索引”。
    1db.student.createIndex({"name":1});      //1表示name从小到大排列
    这样,今后通过name寻找student文档的时候,速度非常快。因为能够快速的从索引表中,找到这个文档。
    缺点就是插入每条数据的时候,时间变慢了,效率低了。但是换回来的就是寻找的速度快了。
    
    索引这个属性,所有的文档都不能相同:
    1db.members.createIndex( { "user_id": 1 }, { unique: true } );
    二、Mongoose
    是一个将JavaScript对象与数据库产生关系的一个框架,object related model。操作对象,就是操作数据库了;对象产生了,同时也持久化了。
    这个思路是Java三大框架SSH中Hibernate框架的思路。彻底改变了人们使用数据库的方式。
    http://mongoosejs.com/
    //引包,并不需要引用mongodb这个包
    var mongoose = require('mongoose');
    //链接数据库,haha是数据库名字
    mongoose.connect('mongodb://localhost/haha');
    
    //创建了一个模型。猫的模型。所有的猫,都有名字,是字符串。“类”。创建类,数据库自动创建了cats集合,
    var Cat = mongoose.model('Cat', { name: String });
    //实例化一只猫,实例化类对象
    var kitty = new Cat({ name: 'Zildjian' });
    //调用这只猫的save方法,保存这只猫,调用类的方法
    kitty.save(function (err) {
      console.log('喵喵喵');
    });
    
    var tom = new Cat({"name":"汤姆"});
    tom.save(function(){
        console.log('喵喵喵');
    });
    上面的代码中,没有一个语句是明显的操作数据库,感觉都在创建类、实例化类、调用类的方法。都在操作对象,但是数据库同步被持久了。
    
    mongoose的哲学,就是让你用操作对象的方式操作数据库。
    创建一个模型
    1mongoose.model("Cat",{"name" : String , "age" : Integer}); 
    就可以被实例化
    1var kitty = new Cat({ name: 'Zildjian' });
    然后这个实例就可以被save。
    
    中文博客:  https://cnodejs.org/topic/51ff720b44e76d216afe34d9
    
    mongoose首先要想明白一件事儿,所有的操作都不是对数据库进行的。所有的操作都是对类、实例进行的。但是数据库的持久化自动完成了。
  • 相关阅读:
    7.1 深搜子集和问题 (枚举子集+剪枝)
    javascript的运算符
    javascript中的数据类型Null
    其他进制数字转换
    javascript数据类型转换number
    javascript强制数据类型转换String
    自增自减
    一元运算符
    javascript中的数据类型boolean
    自增自减的练习
  • 原文地址:https://www.cnblogs.com/yaowen/p/7047051.html
Copyright © 2011-2022 走看看