在聽陳鴻宇的《理想三旬》。好聽~node
上兩篇博文中提到了在Mac下Mongodb的安裝與鏈接,此次咱們來看看如何經過Node操做Mongodb。ios
PS:本文中的數據集合採用上篇博文中'test'庫中的"mycollection"。
mongodb
一:安裝MongoDB包數據庫
使用Node中的mongodb模塊,須要先安裝哦~打開終端,輸入以下命令~npm
npm install mongodb |
二:數據庫鏈接與斷開服務器
1:引入mongodb模塊ide
var mongo = require("mongodb"); |
2:建立MongoDB數據庫的服務器對象ui
var server = new mongo.Server(host,port,[options]); |
說明:host:服務器所在地址,默認本地localhost;port:服務器端口號,默認27017;options:可選配置參數。spa
3:建立MongoDB的db對象server
var db = new mongo.Db(databasename,server,[options]); |
說明:databasename:數據庫名,這裏咱們使用上篇的「test」數據庫;server:服務器對象;options:可選配置參數。
4:執行db的open方法,鏈接數據庫
db.open(callback(err,db)); |
說明:callback回調方法,若是鏈接失敗,將拋出err錯誤,鏈接數據庫成功,會返回db對象。
5:執行db的close方法,斷開數據庫鏈接
db.close(); |
說明:關閉數據庫鏈接時,將會觸發監聽的close事件,該事件有err和db兩參數,意義同上。
function(err,db){ //回調方法 } |
附:代碼片斷。將下述代碼保存在testMongo.js文件中。
var mongo = require("mongodb"); var host = "localhost"; var port = "27017"; var server = new mongo.Server(host,port,{auto_reconnect:true}); var db = new mongo.Db("test",server,{safe:true}); db.open(function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("成功創建數據庫鏈接"); db.close(); } }); db.on("close",function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("關閉數據庫鏈接") } }) |
新開終端,輸入"mongod"打開mongodb。
新開終端,輸入"node testMongo.js",看到以下結果,就成功啦。
testNode node testMongo.js 成功創建數據庫鏈接 關閉數據庫鏈接 |
三:數據集合
MongoDb操做的是數據集合!!!數據的操做就是數據集合的操做。
db.collection(collectionname,[options],callback(err,collection)); |
說明:collectionname:數據庫中數據集合名字,此處是上節的"mycollection";options:可選配置參數。callback:鏈接的回調方法,會有鏈接出錯的err參數和鏈接成功的collecction參數。
附:代碼片斷。保存下述文件到testMongo.js中。
var mongo = require("mongodb"); var host = "localhost"; var port = "27017"; var server = new mongo.Server(host,port,{auto_reconnect:true}); var db = new mongo.Db("test",server,{safe:true}); db.open(function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("成功創建數據庫鏈接"); db.collection('mycollection',function(err,collection){ if(err){ throw err; console.log("鏈接數據集合出錯"); }else{ console.log("成功鏈接數據集合"); db.close(); } }); } }); db.on("close",function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("關閉數據庫鏈接") } }) |
新開終端,輸入"node testMongo.js",看到以下結果,就成功啦。
testNode node testMongo.js 成功創建數據庫鏈接 成功鏈接數據集合 關閉數據庫鏈接 |
四:MongoDb-增
數據集合的insert方法,實現添加數據的操做。
collection.insert(docs,[options],[callback(err,docs)]) |
說明:docs:要插入的數據;options:可選配置參數。可選callback:插入的回調方法,插入出錯的err參數和插入成功時的docs(插入的數據)參數。
附:代碼片斷。保存下述文件到testMongo.js中。--在test庫的mycollection數據集合中插入5條Cailala
var mongo = require("mongodb"); var host = "localhost"; var port = "27017"; var server = new mongo.Server(host,port,{auto_reconnect:true}); var db = new mongo.Db("test",server,{safe:true}); db.open(function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("成功創建數據庫鏈接"); db.collection('mycollection',function(err,collection){ if(err){ throw err; console.log("鏈接數據集合出錯"); }else{ console.log("成功鏈接數據集合"); //insert for(var i = 1;i<6;i++){ collection.insert({'name':'Cailala'+i},function(err,docs){ console.log(docs); db.close(); }); } } }); } }); db.on("close",function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("關閉數據庫鏈接") } }) |
新開終端,輸入"node testMongo.js",看到以下結果,就成功啦。
testNode node testMongo.js 成功創建數據庫鏈接 成功鏈接數據集合 { result: { ok: 1, n: 1 }, ops: [ { name: 'Cailala1', _id: 57a1fb5292764dbc5736dcd9 } ], insertedCount: 1, insertedIds: [ 57a1fb5292764dbc5736dcd9 ] } 關閉數據庫鏈接 { result: { ok: 1, n: 1 }, ops: [ { name: 'Cailala2', _id: 57a1fb5292764dbc5736dcda } ], insertedCount: 1, insertedIds: [ 57a1fb5292764dbc5736dcda ] } { result: { ok: 1, n: 1 }, ops: [ { name: 'Cailala3', _id: 57a1fb5292764dbc5736dcdb } ], insertedCount: 1, insertedIds: [ 57a1fb5292764dbc5736dcdb ] } { result: { ok: 1, n: 1 }, ops: [ { name: 'Cailala4', _id: 57a1fb5292764dbc5736dcdc } ], insertedCount: 1, insertedIds: [ 57a1fb5292764dbc5736dcdc ] } { result: { ok: 1, n: 1 }, ops: [ { name: 'Cailala5', _id: 57a1fb5292764dbc5736dcdd } ], insertedCount: 1, insertedIds: [ 57a1fb5292764dbc5736dcdd ] } |
五:MongoDb-查
數據集合的find方法,實現查詢數據的操做。
collection.find(selector,[options]).toArray(callback(err,docs)) |
說明:selector:查詢條件;options:可選配置參數。find方法返回的是Cursor遊標對象,該對象的toArray方法將返回查詢到的全部數據文檔,參數callback:查詢的回調方法,查詢出錯的err參數和查詢成功時的docs(查詢出的數據)參數。
附:代碼片斷。保存下述文件到testMongo.js中。--查詢數據集合中name是Cailala1的數據
var mongo = require("mongodb"); var host = "localhost"; var port = "27017"; var server = new mongo.Server(host,port,{auto_reconnect:true}); var db = new mongo.Db("test",server,{safe:true}); db.open(function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("成功創建數據庫鏈接"); db.collection('mycollection',function(err,collection){ if(err){ throw err; console.log("鏈接數據集合出錯"); }else{ console.log("成功鏈接數據集合"); //find collection.find({name:"Cailala1"},{fields:{name:1,_id:0}}).toArray(function(err,docs){ if(err) throw err; else console.log(docs); db.close(); }); } }); } }); db.on("close",function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("關閉數據庫鏈接") } }) |
新開終端,輸入"node testMongo.js",看到以下結果,就成功啦。
testNode node testMongo.js 成功創建數據庫鏈接 成功鏈接數據集合 [ { name: 'Cailala1' } ] 關閉數據庫鏈接 |
六:MongoDb-改
數據集合的update方法,實現修改數據的操做。
collection.update(selector,documents,[optios],[callback(err,resu)]) |
說明:selector:須要更新的數據文檔;documents:用於更新的文檔;options:可選配置參數;可選callback:修改的回調方法,修改出錯的err參數和修改爲功時的result(成功修改的數據條數)參數。
附:代碼片斷。保存下述文件到testMongo.js中。--修改name是Cailala1爲liujinhuan,並查詢輸出。
var mongo = require("mongodb"); var host = "localhost"; var port = "27017"; var server = new mongo.Server(host,port,{auto_reconnect:true}); var db = new mongo.Db("test",server,{safe:true}); db.open(function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("成功創建數據庫鏈接"); db.collection('mycollection',function(err,collection){ if(err){ throw err; console.log("鏈接數據集合出錯"); }else{ console.log("成功鏈接數據集合"); // update collection.update({name:"Cailala1"},{name:"liujinhuan"},function(err,res){ if(err){ throw err; }else{ console.log("成功更新 "+JSON.parse(res).n+" 條數據"); collection.find({},{fields:{name:1,_id:0}}).toArray(function(err,docs){ if(err) throw err; else console.log(docs); db.close(); }); } }); } }); } }); db.on("close",function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("關閉數據庫鏈接") } }) |
新開終端,輸入"node testMongo.js",看到以下結果,就成功啦。
testNode node testMongo.js 成功創建數據庫鏈接 成功鏈接數據集合 成功更新 1 條數據 [ { name: 'liujinhuan' }, { name: 'Cailala2' }, { name: 'Cailala3' }, { name: 'Cailala4' }, { name: 'Cailala5' } ] 關閉數據庫鏈接 |
七:MongoDb-刪
數據集合的remove方法,實現刪除數據的操做。
collection.remove([selector],[options],[callback]) |
說明:可選selector:刪除的條件,不指定則刪除所有;可選options:配置參數;可選callback:刪除的回調方法,刪除出錯的err參數和刪除成功時的result(成功修改的數據條數)參數。
附:代碼片斷。保存下述文件到testMongo.js中。
var mongo = require("mongodb"); var host = "localhost"; var port = "27017"; var server = new mongo.Server(host,port,{auto_reconnect:true}); var db = new mongo.Db("test",server,{safe:true}); db.open(function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("成功創建數據庫鏈接"); db.collection('mycollection',function(err,collection){ if(err){ throw err; console.log("鏈接數據集合出錯"); }else{ console.log("成功鏈接數據集合"); //remove collection.remove({name:"liujinhuan"},function(err,res){ if(err){ throw err; }else{ console.log("成功刪除 "+JSON.parse(res).n+" 條數據"); collection.find({},{fields:{name:1,_id:0}}).toArray(function(err,docs){ if(err) throw err; else console.log(docs); db.close(); }); } }); } }); } }); db.on("close",function(err,db){ if(err){ throw err; console.log("鏈接數據庫出錯"); }else{ console.log("關閉數據庫鏈接") } }) |
新開終端,輸入"node testMongo.js",看到以下結果,就成功啦。
testNode node testMongo.js 成功創建數據庫鏈接 成功鏈接數據集合 成功刪除 1 條數據 [ { name: 'Cailala2' }, { name: 'Cailala3' }, { name: 'Cailala4' }, { name: 'Cailala5' } ] 關閉數據庫鏈接 |
以上就是總結的Node操做的Mongodb。其中的options都是一些能夠配置的參數~這裏只是基礎的用法啦~歡迎吐槽
Mac不能上傳結果的截圖~又不能上傳實例代碼~好尷尬呀~
聽不懂《理想三旬》。但仍是在聽~直到聽吐爲止吧~