mongodb操作指令以及在node.js封装mongodb的操作方法

1、启动mongodb:

cd path/mongodb/bin                     // 打开命令行,切换到mongodb目录下的bin目录
mongod --dbpath path/mongodb/data/db    // 设置path/mongodb/data/db目录为数据库目录
mongo.exe 或者 mongo                    // 启动JavaScript shell,是操作数据库的命令行

2、mongodb基本命令:

db                                                  // 显示当前所在数据库
show dbs                                            // 显示所有的数据库
use db                                              // 切换到db数据库,数据库不存在则创建新的数据库  
db.dropDatabase()                                   // 删除当前数据库
db.createCollection(name, options)                  // 在当前db下创建新的集合
show tables 或 show collections                      // 显示当前db下的所有集合名(collection)
db.collection.find().pretty()                       // 查询当前db下的collection集合下的所有数据,pretty()让数据更直观的呈现出来
db.collection.insert(obj)                           // 向当前db下的collection集合插入obj数据,若文档不存在,会创建一个新的文档  
db.collection.drop()                                // 删除当前db下的collection集合
db.collection.update(condition, update, options)    // 更新一条数据数据,若options.multi===true,则更新符合条件的所有数据
db.collection.save(obj)                             // 若obj._id存在,则该文档替换成obj,否则插入obj文档
db.collection.remove(condition, options)            // 删除符合condition条件的文档,options.justOne===1 || true时,只删除一条数据

3、node.js环境下mongodb的API封装:

const MongoClient = require('mongodb').MongoClient
const url = 'mongodb://localhost:27017'
const DB = 'test'

function _connectDB (callback) { // { useNewUrlParser: true } 是为了向前兼容
    MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
        callback(err, db)
    })
}

// 插入一个文档数据
module.exports.insertOne = function (collection, data, callback) {
    _connectDB(function (err, db) {
        if (err) throw err
        var database = db.db(DB)
        database.collection(collection).insertOne(data, function (err, result) {
            callback(err, result)
            db.close()
        })
    })
}
// 插入多个文档数据,传入的data必须为数组
module.exports.insert = function (collection, data, callback) {
    _connectDB(function (err, db) {
        if (err) throw err
        let database = db.db(DB)
        if (!(data instanceof Array)) {
            throw new Error('请使用数组传入多个数据,或者调用Insert添加单个数据')
        }
        if (data.length === 0) {
            throw new Error('禁止插入空数组')
        } 
        database.collection(collection).insertMany(data, function(err, result) {
            callback(err, result)
            db.close()
        })
    })
}
// 删除单个数据
module.exports.deleteOne = function (collection, condition, callback) {
    _connectDB(function (err, db) {
        if (err) throw err
        let database = db.db(DB)
        database.collection(collection).deleteOne(condition, function (err, result) {
            callback(err, result)
            db.close()
        })
    })
}
// 删除多个数据
module.exports.delete = function (collection, condition, callback) {
    _connectDB(function (err, db) {
        if (err) throw err
        let database = db.db(DB)
        database.collection(collection).deleteMany(condition, function (err, result) {
            callback(err, result)
            db.close()
        })
    })
}
// 查询数据,condition为{}时可以查询该集合下的所有文档
module.exports.find = function (collection, condition, callback) {
    _connectDB(function (err, db) {
        if (err) throw err
        let database = db.db(DB)
        database.collection(collection).find(condition).toArray(function (err, result) {
            callback(err, result)
            db.close()
        })
    })
}

猜你喜欢

转载自blog.csdn.net/weixin_41855143/article/details/81810702
今日推荐