使用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

猜你喜欢

转载自www.cnblogs.com/zp900704/p/11688041.html