使用nodejs操作mongodb的正確姿勢


mongodb是一個文檔型的數據庫,里面的數據存儲和查詢基本上是json格式的,mongodb和nodejs就好像皮蛋和豆腐天生一對。

使用nodejs操作mongodb前需要了解mongodb的層次結構:

  • system(安裝mongodb就會有的數據庫)
    • admin
  • userdefind(用戶自定義的數據庫)
    • database(數據庫名稱)
      • collections(表集合)
        • collection(集合)
      • functions
      • users

mongodb針對nodejs提供了官方的驅動mongdb可以直接使用npm工具進行加載。由於nodejs的模型特性,因此使用mongodb進行相關操作全部是通過回調的方式或者是promise的方式。

搭建環境

  • 安裝nodejs
  • npm init
  • package.json中添加dependencies

獲取所有的數據庫

api:admin.listDatabases

//回調版
const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
    client.db("").admin().listDatabases(function (err, resp) {
        resp.databases.forEach(function (value, index, arr) {
            console.log(value.name);
        })
    })
});

//promise版

const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
    client.db("").admin().listDatabases().then(function (data) {
        data.databases.forEach(function (value, index, arr) {
            console.log(value.name);
        })
    }, function (err) {
        console.log(err.message);
    })
});

創建數據庫

mongodb當數據庫不存在時,會自動創建數據庫,因此,可以不用特意的進行數據庫的創建操作

創建集合

const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
    client.db("example").createCollection("table1").then(function (result) {
    }, function (err) {
        console.log(err.message);
    })
});

獲取所有集合

const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
    client.db("example").listCollections().toArray().then(function (tables) {
        tables.forEach(function (value, index, ts) {
            console.log(value.name);
        })
    }, function (err) {
        console.log(err.message);
    })
});

向集合中插入數據

const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
    client.db("example").collection("table1").insert({ name: "張三豐" }).then(function (result) {
    }, function (err) {
        console.log(err.message);
    })
});

獲取集合中所有數據

const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
    client.db("example").collection("table1").find({}).toArray().then(function (result) {
        result.forEach(function (value, index, arr) {
            console.log(value.name);
        });
    }, function (err) {
        console.log(err.message);
    })
});

修改數據

const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
    client.db("example").collection("table1").update({ name: "李斯" }, { age: 100,name: "李斯" }).then(function (result) {
        console.log(result.result);
    }, function (err) {
        console.log(err.message);
    })
});

按條件查詢

const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
    client.db("example").collection("table1").find({ age: 100 }).toArray().then(function (result) {
        result.forEach(function (value, index, arr) {
            console.log(value);
        })
    }, function (err) {
        console.log(err.message);
    })
});

刪除數據

const mongoclient = require("mongodb").MongoClient;
const url = "";
mongoclient.connect(url, function (err, client) {
    client.db("example").collection("table1").deleteMany({ age: 100 }).then(function (result) {
        console.log(result.result);
    }, function (err) {
        console.log(err.message);
    })
});

一個簡單的mongodb數據復制項目https://github.com/golangaccount/mongodb_simple_clone


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM