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,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",function () {
  console.log("数据库连接成功~~~");
});
//index.js内容:
  require("./tools/mongo");
  <直接调用mongo.js里的内容,方便连接上数据库>

相关文章

文章浏览阅读752次。关系型数据库关系型数据库是一个结构化的...
文章浏览阅读687次,点赞2次,收藏5次。商城系统中,抢购和秒...
文章浏览阅读1.4k次。MongoTemplate开发spring-data-mongodb...
文章浏览阅读887次,点赞10次,收藏19次。1.背景介绍1. 背景...
文章浏览阅读819次。MongoDB连接失败记录_edentialmechanisn...
文章浏览阅读470次。mongodb抽取数据到ES,使用ELK内部插件无...