## **1、 在 Nodejs 中使用 Mongodb**
前面的课程我们讲了用命令操作 MongoDB,这里我们看下如何用 nodejs 来操作数据库
需要引包:
```
npm install mongodb --save-dev / cnpm install mongodb --save-dev
```
网址:
https://docs.mongodb.com/getting-started/node/introduction/
https://docs.mongodb.com/getting-started/node/query/
## **2、Nodejs 连接 MongoDb 数据库**
```
var express = require("express");
// 数据库引用
var MongoClient = require('mongodb').MongoClient;
var app = express();
// 数据库连接的地址,最后的斜杠表示数据库名字
var shujukuURL = 'mongodb://localhost:27017/news';
app.get("/",function(req,res){
// 连接数据库,这是一个异步的操作
MongoClient.connect(shujukuURL, function(err, db) {
res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"});
if(err){
res.send("数据库连接失败");
return;
}
res.write("恭喜,数据库已经成功连接 \\n");
db.collection("user").insertOne({"name":"哈哈"},function(err,result){
if(err){
res.send("数据库写入失败");
return;
}
res.write("恭喜,数据已经成功插入");
res.end();
// 关闭数据库
db.close();
});
});
});
app.listen(8020);
```
## **3、Nodejs 查找 MongoDb 数据库集合**
```
MongoClient.connect(dbUrl,function(err,db){
if(err){ /*数据库连接失败*/
console.log('数据库连接失败');
return;
}
var result=[];
var userRel=db.collection('user').find();
// res.send(userRel);
userRel.each(function(err, doc) {
if(err){
res.write("游标遍历错误");
return;
}
if (doc != null) {
result.push(doc);
} else {
console.log(result);
//遍历完毕
db.close();
res.render("index",{ "result" : result });
}
});
})
```
## **4、Nodejs 给 MongoDb 增加数据**
```
MongoClient.connect(dbUrl,function(err,db){
if(err){ return }
db.collection('user').insertOne(
{ "name" : name, "age" : age, "score" : { "shuxue" : shuxuechengji, "yuwen" : yuwenchengji } },
function(err,result){
if(err){
console.log('写入数据失败');
}
//关闭数据库
db.close();
// res.redirect('/add');
res.redirect('/');
/*路由跳转*/
res.end();
////res.location('/add')
}
)
})
```
## **5、Nodejs 修改 MongoDb 数据**
```
MongoClient.connect(dbUrl,function(err,db){
if(err){
console.log('数据库连接错误');
return;
}
db.collection('user').updateOne(
{"_id":ObjectID(id)},
{ "name": name, "age": age, "score": { "shuxue": shuxue, "yuwen": yuwen } },
function (err, results) {
console.log(results);
db.close();
res.redirect('/');
/*路由跳转*/
res.end('end');
}
)
})
```
## **六、Nodejs 删除 MongoDb 数据**
```
MongoClient.connect(dbUrl,function(err,db){
if(err){
throw new Error("数据库连接失败");
return;
}
db.collection('user').deleteOne(
{"_id":ObjectID(id)},
function(error,result){
if(error) {
throw new Error('删除数据失败');
return;
}
db.close();
res.redirect('/'); /*路由跳转*/
}
)
})
```
- 前言
- 一、MongoDb 数据库介绍、安装、使用
- 二、MongoDB 数据库创建删除、表(集合) 创建删除、数据增删改查
- 三、MongoDB 索引 和 explain 的使用
- 四、Nodejs 操作 MongoDb 数据库
- 五、关系型数据库表(集合)与表(集合)之 间的几种关系
- 六、MongoDB 的高级查询 aggregate 聚合管道
- 七、mongoose 入门以及 mongoose 实现数据 的增、删、改、查
- 八、Mongoose 预定义模式修饰符 Getters 与 Setters 自定义修饰符
- 九、Mongoose 索引、Mongoose 内置 CURD 方 法、扩展 Mongoose Model 的静态方法和 实例方法
- 十、Mongoose 数据校验
- 十一、Mongoose 中使用 aggregate 聚合管道
- 十二、Mongoose 中使用 populate 实现关联查询
- 十三、MongoDb 数据库的导出导入