Nosql_Mongoose简介及操做

Mongoose简介:

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

Mongoose优势:

一、能够为文档建立一个模式结构
二、能够对模型中的对象/文档进行验证
三、数据能够经过类型转换转换为对象模型
四、可使用中间件来应用业务逻辑挂钩
五、比Node原生的MongoDB驱动更容易数据库

Mongoose提供的新对象:

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

- Model
  *Model对象做为集合中的全部文档的表示,至关于MongoDB数据库中的集合collection服务器

- Document
  *Document表示集合中的具体文档,至关于集合中的一个具体的文档mongoose

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里的内容,方便链接上数据库>
相关文章
相关标签/搜索