mongodb是一個文檔型的數據庫,里面的數據存儲和查詢基本上是json格式的,mongodb和nodejs就好像皮蛋和豆腐天生一對。
使用nodejs操作mongodb前需要了解mongodb的層次結構:
- system(安裝mongodb就會有的數據庫)
- admin
- userdefind(用戶自定義的數據庫)
- database(數據庫名稱)
- collections(表集合)
- collection(集合)
- functions
- users
- collections(表集合)
- database(數據庫名稱)
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