二、索引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首先要想明白一件事儿,所有的操作都不是对数据库进行的。所有的操作都是对类、实例进行的。但是数据库的持久化自动完成了。