nodejs操作mongodb資料庫(mongodb)

ITzhongzi發表於2017-04-08

準備

  1. 通過npm命令安裝mongodb
  2. 安裝mongodb資料庫,這裡不詳細介紹了,網上一堆

CRUD操作

在此之前應對MongoDB資料庫有所瞭解,知道它的一些增刪查改命令。

1.增加

var MongoClient = require("mongodb").MongoClient;
var DB_URL = "mongodb://localhost:27017/chm";

function insertData(db)
{
    var devices = db.collection('vip');
    var data = {"name":"node","age":22,"addr":"nb","addTime":new Date()};
    devices.insert(data,function(error, result){
        if(error)
        {
            console.log('Error:'+ error);
        }else{

            console.log(result.result.n);
        }
        db.close();
    });
}

MongoClient.connect(DB_URL, function(error, db){
    console.log('連線成功!');
    insertData(db);
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2.查詢

var mongodb = require('mongodb')
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/chm';  

var selectData = function(db, callback) {  
  //連線到表  
  var collection = db.collection('vip');
  //查詢資料
  var whereStr = {"name":'node'};
  collection.find(whereStr,function(error, cursor){
    cursor.each(function(error,doc){
        if(doc){
            //console.log(doc);
            if (doc.addTime) {
                console.log("addTime: "+doc.addTime);
            }
        }
    });

  });

}

MongoClient.connect(DB_CONN_STR, function(err, db) {
  console.log("連線成功!");
  selectData(db, function(result) {
    console.log(result);
    db.close();
  });
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

3.更新

var MongoClient = require("mongodb").MongoClient;
var DB_URL = "mongodb://localhost:27017/chm";

MongoClient.connect(DB_URL, function(error, db){
    console.log("連線成功!");
    updateData(db);
});

function updateData(db)
{
    var devices = db.collection('vip');
    var whereData = {"name":"node"}
    var updateDat = {$set: {"age":26}}; //如果不用$set,替換整條資料
    devices.update(whereData, updateDat, function(error, result){
        if (error) {
            console.log('Error:'+ error);
        }else{
            console.log(result);
        }
        db.close();
    });
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

4.刪除

var MongoClient = require('mongodb').MongoClient;
var DB_URL = "mongodb://localhost:27017/chm";

MongoClient.connect(DB_URL, function(error, db){
    console.log("連線成功");
    deleteData(db);
});

function deleteData(db)
{
    var devices = db.collection('vip');
    var data = {"name":"node"};
    devices.remove(data, function(error, result){
        if (error) {
            console.log('Error:'+ error);
        }else{
            console.log(result.result.n);
        }
        db.close();
    })
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

儲存過程

在mongodb中建立儲存過程

這裡寫圖片描述

所有儲存過程都存放在db.system.js中,通過db.eval(“儲存過程ID()”);呼叫儲存過程。

在程式碼中呼叫:

var MongoClient = require("mongodb").MongoClient;
var DB_URL = "mongodb://localhost:27017/chm";

MongoClient.connect(DB_URL, function(error,db){
    console.log("連線成功!");
    callProcess(db)
});

function callProcess(db)
{
    db.eval("get_vip_count()",function(error, result){
        if (error) {
            console.log(error);
        }else{
            console.log("count:"+result);
        }
        db.close();
    });
}

相關文章