加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Nosql中Mongoose简介及操作

发布时间:2020-12-13 13:28:02 所属栏目:百科 来源:网络整理
导读:Mongoose简介: Mongoose是一个让我们通过Node来操作MongoDB的模块,Mongoose是一个对象文档模型库,它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能 Mongoose优点: 1、可以为文档创建一个模式结构 2、可以对模型中的对象/文档进行验

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里的内容,方便连接上数据库>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读