近期学习mongodb,总结了一些常规的增、删、改、查、连表查询操作
// 连接地址
const MongoClient = require('mongodb').MongoClient;
const config = require('./config');
var url = config.url; // 启动cmd输入mongo查看
// 新增一条数据
// 库 -- library 集合 -- muster 一条数据 -- data
function addData(library, muster, data) {
return new Promise((resolve, reject) => {
MongoClient.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
}, async function (err, db) {
if (err) throw err;
// console.log("数据库连接成功!");
// 插入数据
let dbo = db.db(library); // 指定数据库 data表示数据库的名称
dbo.collection(muster).insertOne(data, async (error, result) => {
if (error) throw error;
resolve(result);
db.close(); // 提高性能
});
});
})
}
// 删除一条数据
// 库 -- library 集合 -- muster 条件 -- whereSearch
function delData(library, muster, whereSearch) {
return new Promise((resolve, reject) => {
MongoClient.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
}, async function (err, db) {
if (err) throw err;
// console.log("数据库连接成功!");
let dbo = db.db(library); // 指定数据库 data表示数据库的名称
dbo.collection(muster).deleteOne(whereSearch, function (err, obj) {
if (err) throw err;
resolve(obj);
db.close();
});
});
})
}
// 更新数据
// 库 -- library 集合 -- muster 查询条件 -- whereStr 更新数据 -- updateStr
function upData(library, muster, whereStr, updateStr) {
return new Promise((resolve, reject) => {
MongoClient.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
}, function (err, db) {
if (err) {
throw err;
} else {
let dbo = db.db(library);
// 更新数据
dbo.collection(muster).updateOne(whereStr, updateStr, function (error, result) {
if (error) throw error;
resolve(result);
db.close();
});
}
})
})
}
// 查询数据
// 库 -- library 集合 -- muster 查询条件 -- searchTip
function searchData(library, muster, searchTip) {
return new Promise((resolve, reject) => {
MongoClient.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
}, async function (err, db) {
if (err) throw err;
// console.log("数据库连接成功!");
let dbo = db.db(library); // 指定数据库 data表示数据库的名称
// 查询数据
dbo.collection(muster).find(searchTip).toArray((error, result) => { // 返回集合中所有数据
if (error) reject(error);
resolve(result)
db.close();
});
});
})
}
// 连表查询数据 - 左连接
// 库 -- library 集合 -- musterLeft musterRight 查询条件 -- searchTip
function leftSearchData(library, musterLeft, musterRight, keyLeft, keyRight, list) {
return new Promise((resolve, reject) => {
MongoClient.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
}, async function (err, db) {
if (err) throw err;
// console.log("数据库连接成功!");
let dbo = db.db(library); // 指定数据库 data表示数据库的名称
// 左连接
dbo.collection(musterLeft).aggregate([{
$lookup: {
from: musterRight, // 右集合
localField: keyLeft, // 左集合 join 字段
foreignField: keyRight, // 右集合 join 字段
as: list // 新生成字段(类型array)
}
}]).toArray(function (err, result) {
if (err) throw err;
resolve(result);
db.close();
});
});
})
}
module.exports = {
addData: addData,
delData: delData,
upData: upData,
searchData: searchData,
leftSearchData: leftSearchData
}
具体使用: