1. 程式人生 > >Nodejs學習筆記(二)--- 操作MongoDB數據庫

Nodejs學習筆記(二)--- 操作MongoDB數據庫

效果 view asc erro eve mongdb splay play 所有

最近看了一些關於mongodb的文章,然後就想知道nodeJS是怎麽連接的所以我就嘗試去了解了一波(這個菜鳥驛站這個網站還不錯,雖然知識文檔不是最新的,但是還是蠻好的;

  順便官網地址是這個哦:http://mongoosejs.com/docs/guide.html

好了,讓我們來進入今天的主題:

 首先來進入你項目的根目錄下安裝: npm install mongoose

一直想用下這個數據的,最近終於得償所願。數據庫的使用,我覺得首先是從增刪改查開始,然後才去像更加復雜的地步去賣家
首先如何去獲取他的連接
創建db.js , 可以直接通過node db.js 命名去觀察連接的效果
一 建立連接
var mongoose = require(‘mongoose‘),
DB_URL = ‘mongodb://127.0.0.1:27017/Test‘;

// 連接
mongoose.connect(DB_URL);

// 測試連接是否成功
mongoose.connection.on(‘connected‘, function () {
  console.log(‘my mongodb connection success !!!‘)
})

// 連接異常的情況
mongoose.connection.on(‘error‘, function (er) {
  console.log(
‘connection error: ‘ + er); }) // 連接斷開 mongoose.connection.on(‘disconnected‘, function () { console.log(‘mongogdb disconnection‘) }) module.exports = mongoose;

二: 創建數據模型
創建Schema ( 有點類似創建實例屬性) 並建立Model

// 獲取連接
var mongoose = require(‘./db.js‘),
  Schema = mongoose.Schema;

// 創建用戶
var userInfo = new Schema({
  uid: {type: String},
  uname: {type: String},
  upwd: {type: String},
  loginDate: {type: Date}
})

// 將定義好的schema 轉換為model 
module.exports = mongoose.model(‘userInfo‘, userInfo);

三 對數據庫操作 

3.1 插入操作:

技術分享圖片
var User = require(‘./userInfo.js‘)

/*
 插入操作
 */

function insert() {
  var userInfo = new User({
    uid: ‘1‘,
    uname: ‘yaobo1‘,
    upwd: ‘123‘,
    loginDate: new Date()
  })

  userInfo.save(function (err, res) {
    if(err) {
      console.log(‘err‘ + err);
    } else {
      console.log(‘res:‘ + res)
    }
  })
}
insert();
View Code

3.2 查詢操作:

  這裏在做模糊查詢的時候是使用正則表達式來判斷的

  引用:

$regex操作符的使用 $regex操作符中的option選項可以改變正則匹配的默認行為,它包括i, m, x以及S四個選項,其含義如下
  • i 忽略大小寫,{<field>{$regex/pattern/i}},設置i選項後,模式中的字母會進行大小寫不敏感匹配。
  • m 多行匹配模式,{<field>{$regex/pattern/,$options:‘m‘},m選項會更改^和$元字符的默認行為,分別使用與行的開頭和結尾匹配,而不是與輸入字符串的開頭和結尾匹配。
  • x 忽略非轉義的空白字符,{<field>:{$regex:/pattern/,$options:‘m‘},設置x選項後,正則表達式中的非轉義的空白字符將被忽略,同時井號(#)被解釋為註釋的開頭註,只能顯式位於option選項中。
  • s 單行匹配模式{<field>:{$regex:/pattern/,$options:‘s‘},設置s選項後,會改變模式中的點號(.)元字符的默認行為,它會匹配所有字符,包括換行符(\n),只能顯式位於option選項中。
使用$regex操作符時,需要註意下面幾個問題:
  • i,m,x,s可以組合使用,例如:{name:{$regex:/j*k/,$options:"si"}}
  • 在設置索弓}的字段上進行正則匹配可以提高查詢速度,而且當正則表達式使用的是前綴表達式時,查詢速度會進一步提高,例如:{name:{$regex: /^joe/}
技術分享圖片
var User = require(‘./userInfo.js‘)

/*
   查詢操作
 */

function find() {
  let wherestr = {uid: ‘1‘}

  User.find(wherestr, function (err, res) {
    if(err) {
      console.log(‘err‘ + err);
    } else {
      console.log(‘res:‘ + res)
    }
  })
}

/*
  模糊查詢
 */

function getRegex(){
  var wherestr = {uname: {$regex: /yaobo/m}}
  console.log(wherestr);
  User.find(wherestr, function (err, res) {
    if(err) {
      console.log(‘err‘ + err);
    } else {
      console.log(‘res:‘ + res)
    }
  })
}

/*
  聚合查詢
 */

function aggregate(){
  var wherestr = [{$group: {_id: ‘$uname‘, num: {$sum: 1}}}]
  console.log(wherestr);
  User.aggregate(wherestr, function (err, res) {
    if(err) {
      console.log(‘err‘ + err);
    } else {
      console.log(‘res:‘ + JSON.stringify(res))
    }
  })
}

//find();

// http://blog.csdn.net/u022812849/article/details/51314810

// getRegex();

aggregate();
View Code

3.3 刪除操作

技術分享圖片
var User = require(‘./userInfo.js‘)

function remove() {
  let wherestr = {uid: ‘1‘}

  User.remove(wherestr, function (er, res) {
    if (er) {
      console.log(‘er:‘, er)
    }
    if (res) {
      console.log(‘res‘, res)
    }
  })
}

remove();
View Code

3.4 更新操作

技術分享圖片
var User = require(‘./userInfo.js‘)

function update() {
  var wherestr = {uname: ‘yaobo1‘}
  var updatestr = {uname: ‘神奇的造物主‘}

  User.update(wherestr, updatestr, function (er , res) {
     if (er) {
       console.log(‘er:‘, er)
     }
     if (res) {
       console.log(‘res‘, res)
     }
  })
}

update();
View Code

  其實這樣寫下來就會發現,掌握了結構之後,就是知道如何去使用nodejs去操作mongodb, 可能有些復雜的沒寫(後續有好的東西,再往上加),不過基本語句掌握了,掌握mongdb的語言就尤為重要了

Nodejs學習筆記(二)--- 操作MongoDB數據庫