09. nodejs操作MongoDB

nodejs操作MongoDB

nodejs操作MongoDB上一篇文章對MongoDB的操作是在mongo客戶端shell中執行的命令,實際工作中多是利用程序來操作MongDB,類似php操作mysql中的PDO,nodejs操作MongoDB也需要安裝相應的依賴,比如mongo、mongose,

mongo庫

安裝依賴

npm install mongodb --save-dev

在這裏插入圖片描述

連接數據庫

//1. 引入mongo客戶端
var mongoClient = require("mongodb").MongoClient;//引入連接客戶端
//2. 開始連接
var mongoUrl = "mongodb://localhost:27017/student";//student數據庫名
mongo.Client.connect(mongoUrl,{useNewUrlParse:true},function(err,db){
    if(err){
        console.log("連接成功")
    	//其他CRUD操作
    }
})

插入數據

//像student數據庫的user集合user插入一條隨機記錄
db.db("student").collection("user").insertOne({
    name: "user_" + Math.ceil(Math.random() * 100),
    age: Math.ceil(Math.random() * 100),
    sex: Math.random() > 0.5 ? "man" : "woman"
}, function (err, result) {
    if (err) {
        res.end("數據庫寫入失敗");
        return;
    } else {
        if (result.result.ok == 1) {
            res.write("恭喜,數據成功寫入");
            res.end();
        } else {
            res.write("遺憾,數據成功失敗");
            res.end();
        }
        //最後關閉數據庫
        db.close();
    }
})

注意:程序中的db指連接數據庫成功後的句柄,下同

查看數據

//查看student數據庫中user集合的所有表
db.db("student").collection("user").find().toArray(function (err, result) {
        if (err) {
          res.end("遺憾,數據查詢失敗");
          console.log("err", err);

        } else {
          console.log("reslut", result);
          res.end("數據查詢成功,請前往後臺運行界面查看結果");
        }
        db.close();
      });

修改數據

//修改name=happy的文檔(表)
db.db("student").collection("user").updateOne({
        "name": "happy" //要替換文檔(記錄)的檢索條件
      }, {//替換目標內容
        $set: {
          name: "happy update ok",
          age: "100",
        }
      }, function (err, result) {
        if (err) {
          res.end("遺憾,數據更新失敗");
          console.log("err", err);
        } else {
          console.log("result", result.result.ok);
          res.end("數據更新成功");
        }
        db.close();
      })

刪除數據

db.db("student").collection("user").deleteOne({
        name: "zhangsan" //要刪除文檔(記錄)的檢索條件
      }, function (err, result) {
        if (err) {
          res.end("遺憾,數據刪除失敗");
          console.log("err", err);
        } else {
          console.log("result", result.result.ok);
          res.end("數據刪除成功");
        }
        db.close();
      })

利用http模塊編寫簡易web服務的完成例程:

var http = require("http");
var url = require("url");
var mongoClient = require("mongodb").MongoClient;//客戶端引入
var mongoUrl = "mongodb://localhost:27017/student";// student是數據庫名 

var server = http.createServer(function (req, res) {
  var requrl = url.parse(req.url, true);
  var pathname = requrl.pathname;

  res.writeHead(200, { "Content-Type": "text/html;charset=UTF8" });
  if (pathname == "/") {
    res.end("請分別訪問 /add、/view、/edit、/delete 來查看CURD效果");
  } else if (pathname == "/add") {
    mongoClient.connect(mongoUrl, { useNewUrlParser: true }, function (err, db) {//數據庫連接
      if (err) {
        res.end("數據庫連接失敗");
        return;
      }
      //像student數據庫的user集合user插入一條隨機記錄
      db.db("student").collection("user").insertOne({
        name: "user_" + Math.ceil(Math.random() * 100),
        age: Math.ceil(Math.random() * 100),
        sex: Math.random() > 0.5 ? "man" : "woman"
      }, function (err, result) {
        if (err) {
          res.end("數據庫寫入失敗");
          return;
        } else {
          if (result.result.ok == 1) {
            res.write("恭喜,數據成功寫入");
            res.end();
          } else {
            res.write("遺憾,數據成功失敗");
            res.end();
          }
          //最後關閉數據庫
          db.close();
        }
      })
    })
  } else if (pathname == "/view") {
    mongoClient.connect(mongoUrl, { useNewUrlParser: true }, function (err, db) {
      if (err) {
        res.end("數據庫連接錯誤");
        return;
      }
      console.log("數據庫連接成功");
      db.db("student").collection("user").find().toArray(function (err, result) {
        if (err) {
          res.end("遺憾,數據查詢失敗");
          console.log("err", err);

        } else {
          console.log("reslut", result);
          res.end("數據查詢成功,請前往後臺運行界面查看結果");
        }
        db.close();
      });
    })
  } else if (pathname == "/edit") {
    mongoClient.connect(mongoUrl, { useNewUrlParser: true }, function (err, db) {
      if (err) {
        res.end("數據庫連接錯誤");
        return;
      }
      console.log("數據庫連接成功");
      db.db("student").collection("user").updateOne({
        "name": "happy" //要替換文檔(記錄)的檢索條件
      }, {//替換目標內容
        $set: {
          name: "happy update ok",
          age: "100",
        }
      }, function (err, result) {
        if (err) {
          res.end("遺憾,數據更新失敗");
          console.log("err", err);
        } else {
          console.log("result", result.result.ok);
          res.end("數據更新成功");
        }
        db.close();
      })
    })
  } else if (pathname == "/delete") {
    mongoClient.connect(mongoUrl, { useNewUrlParser: true }, function (err, db) {
      if (err) {
        res.end("數據庫連接錯誤");
        return;
      }
      console.log("數據庫連接成功");
      db.db("student").collection("user").deleteOne({
        name: "zhangsan" //要刪除文檔(記錄)的檢索條件
      }, function (err, result) {
        if (err) {
          res.end("遺憾,數據刪除失敗");
          console.log("err", err);
        } else {
          console.log("result", result.result.ok);
          res.end("數據刪除成功");
        }
        db.close();
      })
    })
  }

})
server.listen(9999);
console.log("MongoDB連接服務器例程運行於: http://127.0.0.1:9999");

mongose庫

–未完待續–

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章