mongodb操作指令以及在node.js封裝mongodb的操作方法
阿新 • • 發佈:2018-12-24
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、mongo許可權設定
// 建立指定許可權的使用者
use admin
db.auth(user, pwd) // 登入獲得管理員許可權
use test // 跳轉到需要建立許可權使用者的資料庫
db.createUser({
"user" : "testUser", // 賬號
"pwd" : "123456", // 密碼
"roles" : [
{
"role" : "readWrite", // 許可權規則
"db" : "test" // 許可權所在的資料庫範圍
}
]
})
許可權role的具體說明,參考官方文件
4、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()
})
})
}