nodejs操作MongoDB
nodejs操作MongoDB上一篇文章對MongoDB的操作是在mongo客戶端shell中執行的命令,實際工作中多是利用程序來操作MongDB,類似php操作mysql中的PDO,nodejs操作MongoDB也需要安裝相應的依賴,比如mongo、mongose,
mongo庫
安裝依賴
npm install mongodb --save-dev
連接數據庫
//1. 引入mongo客戶端
var mongoClient = require("mongodb").MongoClient;//引入連接客戶端
//2. 開始連接
var mongoUrl = "mongodb://localhost:27017/student";//student數據庫名
mongo.Client.connect(mongoUrl,{useNewUrlParse:true},function(err,db){
if(err){
console.log("連接成功")
//其他CRUD操作
}
})
插入數據
//像student數據庫的user集合user插入一條隨機記錄
db.db("student").collection("user").insertOne({
name: "user_" + Math.ceil(Math.random() * 100),
age: Math.ceil(Math.random() * 100),
sex: Math.random() > 0.5 ? "man" : "woman"
}, function (err, result) {
if (err) {
res.end("數據庫寫入失敗");
return;
} else {
if (result.result.ok == 1) {
res.write("恭喜,數據成功寫入");
res.end();
} else {
res.write("遺憾,數據成功失敗");
res.end();
}
//最後關閉數據庫
db.close();
}
})
注意:程序中的db
指連接數據庫成功後的句柄,下同
查看數據
//查看student數據庫中user集合的所有表
db.db("student").collection("user").find().toArray(function (err, result) {
if (err) {
res.end("遺憾,數據查詢失敗");
console.log("err", err);
} else {
console.log("reslut", result);
res.end("數據查詢成功,請前往後臺運行界面查看結果");
}
db.close();
});
修改數據
//修改name=happy的文檔(表)
db.db("student").collection("user").updateOne({
"name": "happy" //要替換文檔(記錄)的檢索條件
}, {//替換目標內容
$set: {
name: "happy update ok",
age: "100",
}
}, function (err, result) {
if (err) {
res.end("遺憾,數據更新失敗");
console.log("err", err);
} else {
console.log("result", result.result.ok);
res.end("數據更新成功");
}
db.close();
})
刪除數據
db.db("student").collection("user").deleteOne({
name: "zhangsan" //要刪除文檔(記錄)的檢索條件
}, function (err, result) {
if (err) {
res.end("遺憾,數據刪除失敗");
console.log("err", err);
} else {
console.log("result", result.result.ok);
res.end("數據刪除成功");
}
db.close();
})
利用http模塊編寫簡易web服務的完成例程:
var http = require("http");
var url = require("url");
var mongoClient = require("mongodb").MongoClient;//客戶端引入
var mongoUrl = "mongodb://localhost:27017/student";// student是數據庫名
var server = http.createServer(function (req, res) {
var requrl = url.parse(req.url, true);
var pathname = requrl.pathname;
res.writeHead(200, { "Content-Type": "text/html;charset=UTF8" });
if (pathname == "/") {
res.end("請分別訪問 /add、/view、/edit、/delete 來查看CURD效果");
} else if (pathname == "/add") {
mongoClient.connect(mongoUrl, { useNewUrlParser: true }, function (err, db) {//數據庫連接
if (err) {
res.end("數據庫連接失敗");
return;
}
//像student數據庫的user集合user插入一條隨機記錄
db.db("student").collection("user").insertOne({
name: "user_" + Math.ceil(Math.random() * 100),
age: Math.ceil(Math.random() * 100),
sex: Math.random() > 0.5 ? "man" : "woman"
}, function (err, result) {
if (err) {
res.end("數據庫寫入失敗");
return;
} else {
if (result.result.ok == 1) {
res.write("恭喜,數據成功寫入");
res.end();
} else {
res.write("遺憾,數據成功失敗");
res.end();
}
//最後關閉數據庫
db.close();
}
})
})
} else if (pathname == "/view") {
mongoClient.connect(mongoUrl, { useNewUrlParser: true }, function (err, db) {
if (err) {
res.end("數據庫連接錯誤");
return;
}
console.log("數據庫連接成功");
db.db("student").collection("user").find().toArray(function (err, result) {
if (err) {
res.end("遺憾,數據查詢失敗");
console.log("err", err);
} else {
console.log("reslut", result);
res.end("數據查詢成功,請前往後臺運行界面查看結果");
}
db.close();
});
})
} else if (pathname == "/edit") {
mongoClient.connect(mongoUrl, { useNewUrlParser: true }, function (err, db) {
if (err) {
res.end("數據庫連接錯誤");
return;
}
console.log("數據庫連接成功");
db.db("student").collection("user").updateOne({
"name": "happy" //要替換文檔(記錄)的檢索條件
}, {//替換目標內容
$set: {
name: "happy update ok",
age: "100",
}
}, function (err, result) {
if (err) {
res.end("遺憾,數據更新失敗");
console.log("err", err);
} else {
console.log("result", result.result.ok);
res.end("數據更新成功");
}
db.close();
})
})
} else if (pathname == "/delete") {
mongoClient.connect(mongoUrl, { useNewUrlParser: true }, function (err, db) {
if (err) {
res.end("數據庫連接錯誤");
return;
}
console.log("數據庫連接成功");
db.db("student").collection("user").deleteOne({
name: "zhangsan" //要刪除文檔(記錄)的檢索條件
}, function (err, result) {
if (err) {
res.end("遺憾,數據刪除失敗");
console.log("err", err);
} else {
console.log("result", result.result.ok);
res.end("數據刪除成功");
}
db.close();
})
})
}
})
server.listen(9999);
console.log("MongoDB連接服務器例程運行於: http://127.0.0.1:9999");
mongose庫
–未完待續–