NOSQL存儲做爲一種與關係性數據庫徹底不一樣的存儲方式,提供了靈活,大型,敏捷,可擴展的存儲模式,而且在有着複雜的數據情形下性能徹底
不遜色於RDBMS,而做爲NOSQL中流行程度較高的數據庫,mongodb有着上手容易,數據查詢方式多樣等諸多特色,因此也深受歡迎node
今天說的mongoose是一種利用node模塊對mongodb數據庫進行操做的工具,它有着結構化,操做性強,可重複的優勢。更重要的是它將mongodb返回的Json字符串包裝成了Json對象,這在操做時要比直接使用字符串方便許多。
今天就利用mongoose的官方文檔對它的標準操做進行簡單的分析。mongodb
1. 獲取mongoose數據庫
var mongoose = require('mongoose');
2 . 鏈接數據庫mongoose
mongoose.connect('mongodb://yourdb');
3. 鏈接成功或發生error的事件觸發工具
var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); //鏈接失敗時的操做 db.once('open', function(){ //do something after connecting }) //鏈接成功時的操做
4. 在mongoose中,全部事務都由Schema派生性能
1) 定義Schema var kittySchema = mongoose.Schema({ name: String }) 2) 將Schema轉換爲Model var Kitten = mongoose.model('Kitten', kittySchema);
5. 全部的事務都定義爲modelui
var silence = new Kitten(name: 'Silence');
6. 在Schema中添加屬性和方法this
kittySchema.methods.speak = function() { var greeting = this.name; ? 'meow name is' + this.name : 'i don\'t have a name'; console.log(greeting); }//定義方法 var Kitten = mongoose.model('Kitten', kittySchema); var fluffy = new Kitten({ name: fluffy }); fluffy.speak();//使用方法
7. 保存數據對象(若是發生錯誤時會返回,且the first arg是err)code
fluffy.save(function(err, fluffy) { if(err) return console.error(err); fluffy.speak(); });
8. 顯示全部數據對象(Kitten)對象
Kitten.find(function(err, Kittens) { //Kittens是查詢後獲得的數據對象 if(err) return console.error(err); console.log(Kittens); })
9. query method(舉例)
Kitten.find({ name: yourquery }, callback);