MongoDB–nodejs链接和操作常用代码

直接上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
//mongooDB操作类,原生操作,基于NPM MongoDB 3.1.10
//依赖关系
var MongoClient = require('mongodb').MongoClient;
var logger_db = require("../Log/log.js").DB;

//建立mongodb连接,这里是连接新会员系统
var options = {
db_user: "用户名",
db_pwd: "密码",
db_host: "127.0.0.1",
db_port: 27017,
db_name: "数据库名称"
};

var conf = {
useNewUrlParser: true
};

//连接URL
var dbURL = `mongodb://${options.db_host}:${options.db_port}`;
//数据库名称
var dbName = `${options.db_name}`;

//测试连接
MongoClient.connect(dbURL,conf,function(err,db) {
if (err) {
logger_db.error('Mongodb 原生连接失败,原因:' + err);
console.log("Mongodb 原生连接失败!");
}else{
let dbase = db.db(dbName);
console.log('x1B[34m%sx1B[39m', 'Mongodb 原生连接成功');
db.close();
}
});

//函数初始化,这个函数的原型的所有错误自动记录日志,后续不用再多做处理
var DB = function() {};

/**
* 保存单条json数据
* @param table_name 表名
* @param fields 单条json数据
* @param return 成功返回true,失败返回fasle
*/
DB.prototype.SaveOne = async (table_name, fields)=>{
return await new Promise((resolve,reject)=>{
MongoClient.connect(dbURL,conf, function(err, DBServer) {
if (err) throw err;
var dbase = DBServer.db(dbName);
var collection = dbase.collection(table_name);
collection.insertOne(fields, function(err, res) {
if (err) throw err;
resolve(res);
DBServer.close();
});
});
}).then(result =>{
return true;
}).catch(e=>{
logger_db.error('Mongodb 保存单条数据失败,原因:' + e);
return false;
});
};

/**
* 更新单条数据(带操作符)
* @param table_name 表名
* @param conditions 查询条件 {"uid":'38C6742B-6E6D-4193-A7E9-54FC6D0C336C'}
* @param update_fields 要更新的字段,完整的条件 {$set: { "name" : "一个伟大的人" }}
* @param return 成功返回true,失败返回fasle
*/
DB.prototype.UpdateOne = async (table_name, conditions,update_fields)=>{
return await new Promise((resolve,reject)=>{
MongoClient.connect(dbURL,conf, function(err, DBServer) {
if (err) throw err;
var dbase = DBServer.db(dbName);
var collection = dbase.collection(table_name);
collection.updateOne(conditions,update_fields, function(err, res) {
if (err) throw err;
resolve(res);
DBServer.close();
});
});
}).then(result =>{
return true;
}).catch(e=>{
logger_db.error('Mongodb 更新数据失败,原因:' + e);
return false;
});
};

/**
* 更新多条数据(带操作符)
* @param table_name 表名
* @param conditions 查询条件 {"age":'28'}
* @param update_fields 要更新的字段,完整的条件 {$set: { "name" : "一个伟大的人" }}
* @param return 成功返回true,失败返回fasle
*/
DB.prototype.UpdateMany = async (table_name, conditions,update_fields)=>{
return await new Promise((resolve,reject)=>{
MongoClient.connect(dbURL,conf, function(err, DBServer) {
if (err) throw err;
var dbase = DBServer.db(dbName);
var collection = dbase.collection(table_name);
collection.updateMany(conditions,update_fields, function(err, res) {
if (err) throw err;
resolve(res);
DBServer.close();
});
});
}).then(result =>{
console.log(result);
logger_db.info(result.result.nModified + "条文档被更新");
return true;
}).catch(e=>{
logger_db.error('Mongodb 更新数据失败,原因:' + e);
return false;
});
};

/**
* 删除单条数据
* @param table_name 表名
* @param conditions 删除需要的条件 {"uid":'38C6742B-6E6D-4193-A7E9-54FC6D0C336C'}
* @param return 成功返回true,失败返回fasle
*/
DB.prototype.DeleteOne = async (table_name, conditions)=>{
return await new Promise((resolve,reject)=>{
MongoClient.connect(dbURL,conf, function(err, DBServer) {
if (err) throw err;
var dbase = DBServer.db(dbName);
var collection = dbase.collection(table_name);
collection.deleteOne(conditions, function(err, res) {
if (err) throw err;
resolve(res);
DBServer.close();
});
});
}).then(result =>{
return true;
}).catch(e=>{
logger_db.error('Mongodb 删除数据失败,原因:' + e);
return false;
});
};

/**
* 删除多条数据
* @param table_name 表名
* @param conditions 删除需要的条件 {"age":'30'}
* @param return 成功返回true,失败返回fasle
*/
DB.prototype.DeleteMany = async (table_name, conditions)=>{
return await new Promise((resolve,reject)=>{
MongoClient.connect(dbURL,conf, function(err, DBServer) {
if (err) throw err;
var dbase = DBServer.db(dbName);
var collection = dbase.collection(table_name);
collection.deleteMany(conditions, function(err, res) {
if (err) throw err;
resolve(res);
DBServer.close();
});
});
}).then(result =>{
logger_db.info(`${result.result.n}条文档被删除`);
return true;
}).catch(e=>{
logger_db.error('Mongodb 删除数据失败,原因:' + e);
return false;
});
};

/**
* 查询所有
* @param table_name 表名
* @param return 返回值,正确返回结果,错误返回false
*/
DB.prototype.FindAll = async table_name =>{
return await new Promise((resolve,reject)=>{
MongoClient.connect(dbURL,conf, function(err, DBServer) {
if (err) throw err;
var dbase = DBServer.db(dbName);
var collection = dbase.collection(table_name);
collection.find({}).toArray(function(err, result) {
if (err) throw err;
resolve(result);
DBServer.close();
});
});
}).then(result =>{
return result;
}).catch(e=>{
logger_db.error('Mongodb 查询集合内所有失败,原因:' + e);
return false;
});
}

/**
* 按照条件查询
* @param table_name 表名
* @param condition 查询需要的条件例如 {"age":'30'}
* @param return 成功返回结果,失败返回fasle
*/
DB.prototype.FindByCondition = async (table_name, condition)=>{
return await new Promise((resolve,reject)=>{
MongoClient.connect(dbURL,conf, function(err, DBServer) {
if (err) throw err;
var dbase = DBServer.db(dbName);
var collection = dbase.collection(table_name);
collection.find(condition).toArray(function(err, result) {
if (err) throw err;
resolve(result);
DBServer.close();
});
});
}).then(result =>{
return result;
}).catch(e=>{
logger_db.error('Mongodb 安装条件查询失败,原因:' + e);
return false;
});
};

module.exports = new DB();
  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2020 翟天野

请我喝杯咖啡吧~