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裏的內容,方便鏈接上數據庫>
相關文章
相關標籤/搜索