mongoose網站:https://mongoosejs.com/html
Mongoose就是一個讓咱們能夠經過Node來操做MongoDB的一個模塊。
Mongoose本質是一個對象文檔模型(ODM)庫,
他對Node原生的MongoDB模塊進行了一部優化封裝,而且提供了更多的功能。
cnpm install mongoose --save
mongodb
var mongoose =require("mongoose");
數據庫
var db =mongoose.connect("mongodb://user:pass@localhost:port/database");
npm
var mongoose =require("mongoose"); var db =mongoose.connect("mongodb://localhost/m_data"); db.connection.on("error",function (error) { console.log("數據庫鏈接失敗:" + error); }); db.connection.on("open",function () { console.log("數據庫鏈接成功!"); }); db.connection.once('close', ()=>{ console.log('鏈接已經斷開成功!') })
在MongoDB中,多個Document能夠組成Collection(如下簡稱集合),多個集合又能夠組成數據庫。咱們想要操做MongoDB數據,那就得先要具有上面所說的包含數據的「文檔」,文檔又是什麼意思呢,請看以下介紹。api
mongoose中任何任何事物都是從Schema開始的。每個Schema對應MongoDB中的一個集合(collection)。Schema中定義了集合中文檔(document)的樣式。mongoose
//新建Schema 定義規則/字段的規則 let Schema= mongoose.Schema; //定義personSchema的字段(規則)須要new一下 有點像構造函數的樣子 let personSchema= new Schema({ name: String, sex: String, age: Number });
基本屬性類型有:函數
Model—— 由Schema構造生成的模型,根據Schema定義的數據類型規則,可操做具體的符合改規則的數據。優化
let personModel= mongoose.model('person', personSchema);
person:數據庫中的集合名稱,當咱們對其添加數據時若是person已經存在,則會保存到其目錄下,若是未存在,則會建立person集合,而後在保存數據。網站
//4. 插入文檔 personModel.create({ name: '張寧樂', sex: '男', age: 18 }, (err)=>{ if(!err){ console.log('插入成功!') }else{ throw err; } });
mongoose查找數據的一些方法:
https://mongoosejs.com/docs/a...ui
personModel.create([ {name:'張逗逗',age: 2,sex: '男'}, {name:'牛嘻嘻',age: 2,sex: '女'} ], (err)=>{ if(!err){ console.log('插入成功!') }else{ throw err; } })
personModel.find({name: '張寧樂'}, (err, data)=>{ if(!err){ console.log(data) }else{ throw err; } })
personModel.find({}, (err, data)=>{ if(!err){ console.log(data) }else{ throw err; } })
也能夠選擇查找數據的條件(0隱藏 1顯示 id默認顯示) 和MongoDB在命令行中的使用方法同樣
//查詢時只顯示name personModel.find({}, {name: 1, _id: 0}, (err,data)=>{ if(!err){ console.log(data) }else{ throw err; } })
在find()
中 skip
(查詢開始的位置)和limit
(增長的條數)也可使用
personModel.find({}, {name: 1, _id: 0, age: 1}, {skip: 0, limit: 2}, (err, data)=>{ //只顯示name 和 age 從第1開始 每次查詢2條 if(!err){ console.log(data) }else{ throw err; } })
MongoDB的find()、findOne() 等命令在 mongoose裏均可以使用
具體可參考 :https://mongoosejs.com/docs/a...
參考: https://mongoosejs.com/docs/a...
personModel.update({name: '張寧樂'}, {$set: {age: 20}}, (err, data)=>{ if(!err){ console.log('修改爲功!') console.log(data) }else{ throw err; } })
personModel.remove({name:'牛嘻嘻'}, (err)=>{ if(!err){ console.log('刪除成功!') }else{ throw err; } })
personModel.count({}, (err,count)=>{ if(!err){ console.log('查詢條數成功! 一共:' + count + '條'); }else{ throw err; } })
Entity—— 由Model建立的實體,使用save方法保存數據,Model和Entity的操做都能影響數據庫的操做,但Model比Entity更具操做性。
使用Model建立Entity,以下示例:
let mongoose= require('mongoose'); let db= mongoose.connection('mongodb://localhost/m_data'); db.on('open', ()=>{ console.log('鏈接成功!') }) let Schema= mongoose.Schema; let personSchema= new Schema({ name: String, sex: String, age: Number }); let personModel= mongoose.model('person', personSchema); let personEntity = new personModel({ name: '許巍', sex: '男', age: 38 }) personEntity.save((err, person)=>{ if(!err){ console.log('保存成功!') console.log(person); }else{ console.log('保存失敗!') } })