Nodejs開發(2.連線MongoDB)

石曼迪發表於2016-03-28

一、先配置MongoDB

Win10下下載那個安裝版,zip版的會報卻各種DLL,安裝在你希望的路徑,實在安裝錯了,就剪下過來也行(本例E:\mongodb)。

然後是配置啟動指令碼,就是寫一個bat檔案,雙擊即可開啟,因為那啟動命令實在有點長。

在E:\mongodb\bin下建立一個start.bat檔案,寫入:

cd E:\mongodb\bin
mongod --dbpath=../data --directoryperdb --logpath=../log.log --logappend

注意要建立好data目錄

clip_image001

二、使用Nodejs連線MongoDB

在任意地方都可以寫程式碼,比如我在D盤建立了一個Nodejs資料夾,以後的js檔案全部放到裡面,

按住shift郵件選擇開啟命令列,先安裝express:(其實這個可以不安裝)

npm install express

再安裝MongoDB組建:

npm install mongodb

然後開啟Sublime Text 3,在剛才的目錄下建立一個js檔案,並編寫程式碼如下:

var mongodb = require('mongodb');
var server = new mongodb.Server('localhost', 27017, {auto_reconnect:true});
var db = new mongodb.Db('mydb', server, {safe:true});

//連線db
db.open(function(err, db){
    if(!err){
        console.log('connect db');
        db.collection('users', {safe:true}, function(err, collection){
            if(err){
                console.log(err);
            }else{
                var whereStr={"name":"lisi"};
                collection.find(whereStr).toArray(function(err,docs){
                    console.log('find');
                    console.log(docs);
                });
                collection.findOne(function(err,doc){
                    console.log('findOne');
                    console.log(doc);
                });
            }
        });
    }else{
        console.log(err);
    }
});

這段程式碼應該沒有什麼難以理解的地方。

先給資料庫裡面插入兩條資料:

新建表:db.createCollection('要新建的表名');
db.表名.insert(資料);
查詢表中所有資料:db.表名.find();

然後在編輯器中執行control+b即可看到結果:

clip_image002

我給庫裡插了兩條資料:

clip_image003

完整增刪改查程式碼如下:

var  mongodb = require('mongodb');
var  server  = new mongodb.Server('localhost', 27017, {auto_reconnect:true});
var  db = new mongodb.Db('mydb', server, {safe:true});


function search(){
db.open(function(err, db){
    if(!err){
      //console.log(db);
        console.log('connect db');
        db.collection('users', {safe:true}, function(err, collection){
            if(err){
                console.log(err);
            }else{
                           var whereStr={"name":"lisi"};
                   collection.find(whereStr).toArray(function(err,docs){
                   console.log('find');
                   console.log(docs);
                   }); 
                   collection.findOne(function(err,doc){
                    console.log('findOne');
                      console.log(doc);
                   }); 
                    collection.find().toArray(function(err,doc){
                    console.log('findAll');
                      console.log(doc);
                   });
            }

        });
    }else{
        console.log(err);
    }
});
}

function change(){
db.open(function(err, db){
    if(!err){
      //console.log(db);
        console.log('connect db');
        db.collection('users', {safe:true}, function(err, collection){
            if(err){
                console.log(err);
            }else{
                 //var tmp1 = {name:'wangwu',age:13,number:1};
                 //collection.insert(tmp1,{safe:true},function(err, result){
                     //console.log(result);
                 //});

                   //更新資料
                   collection.update({name:'zhangsan'}, {$set:{age:4}}, {safe:true}, function(err, result){
                    console.log("update data");
                       console.log(result);
                   });
                   // 刪除資料
                       // collection.remove({name:'zhangsan'},{safe:true},function(err,result){
                          //console.log(result);
                          //});
            }

        });
    }else{
        console.log(err);
    }
});
}

search();
change();
search();

 

相關文章