## **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 數據庫的導出導入