mongodb數據庫的簡單增刪改查

用過node的小夥伴應該都會知道mongodb,下面的是最簡單的增刪改查操做。javascript

1. app.js java

var express = require('express')
var app = express()
var db = require('./model/db.js')        // 數據庫操做

// 訪問路由對應操做
app.listen(4000)複製代碼

2. module/db.js   這裏封裝了對數據庫的基本操做node

let MongoClient = require('mongodb').MongoClient;

// 封裝內部函數 鏈接數據庫
_connectDB = (callback) => {
    let url = 'mongodb://localhost:27017/Model';
    MongoClient.connect(url, (err,db) => {
        if(err) {
            callback(err,null)
            db.close()
            return;
        }
        callback(err,db)
    })
}複製代碼

封裝新增數據函數mongodb

exports.insertOne = (collectionName, json, callback) => {
    // 鏈接數據庫成功以後回調插入數據
    _connectDB((err,db) => {
        // 插入數據後回調參數 再傳遞迴給形參
        db.collection(collectionName).insertOne(json, (err, result) => {
            callback(err, result)
            // 每次操做完畢記得關閉數據庫
            db.close()
        })
    })
}
複製代碼

封裝刪除數據函數數據庫

exports.deleteMany = (collectionName,json,callback) => {
    _connectDB((err,db) => {
        // 選擇集合 刪除具體的一條數據
        db.collection(collectionName).deleteMany(
            json,
            (err,results) => {
                callback(err,result);
                db.close()
        })
    })
}複製代碼

封裝修改數據函數express

exports.updateMany = (collectionName, json1, json2, callback) => {
    // 選擇具體集合 json1: 要修改的舊數據  json2: 修改爲什麼樣
    _connectDB((err,db) => {
        json1,
        json2,
        (err,result) => {
            callback(err, results)
            db.close()
        }
    })
}複製代碼

最後的就查找數據函數json

exports.find = (collectionName,json,C,D) => {
    // 列表名稱 查找條件 分頁查詢 回調函數
    let result = []
    // 不傳第三個參數的時候,默認查詢所有 若是所有參數都傳了,就按照條件查詢
    if(arguments.length == 3) {
        let callback = C
        let skipnumber = 0
        let limit = 0
    } else if(arguments.length == 4){
        let callback = D
        let args = C
        // 忽略數量 = 每頁顯示多少條 * 當前頁數
        let skipnumber = args.pageamount * args.page || 0
        let limit = args.pageamount || 0        // 數目限制顯示多少條
        let sort = args.sort || {}        // 排序方式
    } else {
        throw new Error('find函數的參數個數,必須是三個或者四個')
        return;
    }

    _connectDB((err,db) => {
        // 建立新遊標
        let cursor = db.collection(collactionName).find(json).skip(skipnumber).limit(limit).sort(sort);
        cursor.each((err,doc) => {
            if(err) {
                callback(err,null)
                db.close()
                return;
            }
            // 判斷 doc 是否有效 無效的話就是遍歷結束了 那就返回查詢到的所有數據
            if(doc != null) {
                result.push(doc)
            } else {
                callback(null,result)
                db.close()
            }
        })
    })
}複製代碼

3. app.js  完善邏輯bash

app.get("/", (req,res) => {
    // 每訪問一次這個頁面 就在 Model 數據庫下的 student 集合下新增一條數據
    db.insertOne("student", {"name": "小白"}, (err, result) => {
        if(err) {
            consoel.log('插入失敗')
            return;
        }
        res.send('插入數據成功')
    })
})

app.get("/read", (err, res) => {
      // 這個頁面接收地址欄接收一個 page 參數
    let page = parseInt(req.query.page)
    // json爲空默認查找所有
    db.find("student",{},{"pageamount": 3, "page": page},(err,result) => {
        res.send(result)
    })
})

app.get("/delete", (err, res) => {
    let _name = req.query.name
     // 根據接收到 name 刪除對應的數據
    db.deleteMany("student", {"name": _name},(err, result) => {
        if(err) {
            console.log(err)
        }
        res.send(reult)
    })
})

app.get("/update", (req,res) => {
     // 三個參數 => 集合 要修改的  修改爲
    db.updateMany(
        "student",
        {"name": "小白"},
        {$set: {name: "大白"}}
        (err,result) => {
            if(err) {
              console.log(res)
            }
           res.send(result);
     })
})
複製代碼

4. 啓動數據庫   好比個人數據庫文件夾在Mondodbapp

mongod --dbpath G:\js\Nodejs\code\Mongodb複製代碼

5. 再新開一個cmd 對數據庫進行查看函數

mongo.exe     // 進入mongodb環境
show dbs     // 查看所有數據庫
use Model    // 使用Model數據庫
show collections    // 查看Model數據庫的所有集合
db.student.find()    // 查看student集合的數據,在訪問頁面後就會數據就會寫入這個集合
複製代碼
相關文章
相關標籤/搜索