Nodejs學習筆記(二)--- 操作MongoDB數據庫
阿新 • • 發佈:2018-01-19
效果 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選項中。
- 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數據庫