Sử dụng mongoose trong NodeJS tức là dùng module mongoose để thực hiện lấy, thêm mới, cập nhật, xóa dữ liệu trong database mongodb.
Trong NodeJS, bạn có thể dùng nhiều thư viện để tương tác với dabase mongodb. Ví dụ như mongoose, mongodb, mongoist….Bài viết này đề cập đến mongoose để thao tác.
Tạo project nodejs và cài đặt mongoose
Đầu tiên bạn cần tạo project và cài module. Hãy tạo 1 folder với tên gì đó, ví dụ node_Mongo và chạy lệnh npm init để khởi tạo

– Bây giờ thì trong folder project đã có 1 file tên package.json. Hãy mở file package.json và thêm lệnh “start”: “nodemon index.js”,
{ "name": "node_mongo",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"express": "^4.21.2",
"mongoose": "^8.9.5",
"nodemon": "^3.1.9"
}
}
– Tiếp theo là cài các module cần dùng trong project
npm install express nodemon mongoose
– Giớ thì tạo file index.js và code tạo ứng dụng node. Trong file này đánh dấu sẵn các vị trí để cấu hình kết nối db, khai báo các schema và đánh dấu vị trí sẽ khai báo các route.
const express = require("express")
var app = express()
app.use( express.json());
const port = 3000
//cấu hình kết nối db
//khai báo các Schema (cấu trúc các collection)
//khai báo các routes
app.listen(port, () =>{
console.log(`Ung dung dang chay o port ${port}`);
})
.on('error', function(err) {
console.log(`Loi xay ra khi chay ung dung ${err}`)
});
Kết nối đến database mongodb
Cấu hình để kết nối đến database mongodb thì dễ thôi. Giả sử bạn đã có database trong mongodb có tên labtop. Vậy thì trong file index.js, code để kết nối đến database ở vị trí cấu hình kết nối db như sau:
//cấu hình kết nối db
const ten_db = "laptop"
const mongoose = require('mongoose');
mongoose.connect(`mongodb://127.0.0.1:27017/${ten_db}`)
.then( () => console.log(`Da ket noi database ${ten_db}`))
Code xong như trên bạn chạy ứng dụng sẽ thấy thông tin kết nối db hiện ra

Khai báo các schema
Kết nối xong thì làm gì nữa? Khai báo Schema để diễn ta cấu trúc các collection. Thực hiện khai báo schema ở sau code kết nối database. Có bao nhiêu collection cần tương tác thì khai báo bấy nhiêu schema . Sau đây là ví dụ khai báo một schema cho collection san_pham
//Khai báo các Schema (cấu trúc các collection)
const spSchema = new mongoose.Schema({
id: { type: Number, unique: true, min: 1 },
ten_sp : { type:String, required:true, },
id_loai : { type:Number, required:true,} ,
hinh:{ type:String, default:''},
gia : { type:Number, default:null},
ngay : { type:Date, default: new Date},
an_hien : { type:String, default:"0"} ,
luot_xem : { type:Number, default:0}
}, { collection: 'san_pham' })

Lấy các document trong collection của mongodb
Sử dụng mongoose trong NodeJS quan trọng nhất là chỗ này đây. Lấy danh sách các document từ mongodb về. Bạn khai báo model với hàm model rồi dùng hàm find để lấy dữ liệu. Mời xem ví dụ sau:
app.get("/api/laptopnew", async (req, res) => {
const spModel = mongoose.model('', spSchema);
let sp_arr = await spModel.find({ an_hien:"1" })
.sort({'ngay': -1}).limit(12).exec();
res.json(sp_arr);
})
Test với trình duyệt hoặc Postman sẽ thấy dữ liệu hiện ra (Bạn có thể response json như ví dụ hoặc render view tùy ý)

Lấy chi tiết một document từ mongodb
Muốn lấy chi tiết một document trong collection, bạn tạo model với hàm model rồi dùng hàm findOne của model.
app.get("/api/laptop/:id", async (req, res) => {
let id = Number(req.params.id);
const spModel = mongoose.model('', spSchema);
let sp = await spModel.findOne( { id:id } );
res.json(sp);
})
Test với trình duyệt hoặc Postman sẽ thấy dữ liệu hiện ra

Thêm document vào collection của mongodb
Để chèn thêm document vào collection, bạn tiếp nhận dữ liệu từ client gửi lên , rồi tạo mới model , sau đó gán các giá trị vào và cuối cùng dùng hàm save()
app.post("/api/laptop/", async (req, res) => {
// Tiếp nhận dữ liệu từ client
let {ten_sp, gia, id_loai, hinh } = req.body
// Tạo model và gán dữ liệu
const spModel = mongoose.model('', spSchema);
let sp_idmax = await spModel.find()
.sort({'id': -1}).limit(1).exec();
let id = sp_idmax[0].id
let sp = new spModel({
id: id + 1,
ten_sp:ten_sp,
gia:gia,
id_loai:id_loai,
hinh:hinh
});
// Lưu vào monggo
await sp.save();
res.json(sp);
})
Test: Request với postman

Cập nhật document trong mongodb
Muốn chỉnh sửa một document đang có trong collection, bạn tiếp nhận dữ liệu từ client gửi lên , rồi tạo mới model , sau đó gán các giá trị vào và cuối cùng dùng hàm save()
app.put("/api/laptop/:id", async (req, res) => {
// Tiếp nhận dữ liệu từ client
let id = Number(req.params.id);
let {ten_sp, gia, id_loai, hinh } = req.body
// Tạo model và gán dữ liệu
const spModel = mongoose.model('', spSchema);
const sp = await spModel.findOne({id:id});
sp.ten_sp = ten_sp;
sp.gia = gia;
sp.id_loai = id_loai;
sp.hinh = hinh;
// Lưu vào monggo
await sp.save();
res.json(sp);
})
Test với postman

Xóa document trong mongodb từ NodeJS
Khi cần xóa một document đang có trong collection, bạn tiếp nhận tham số id từ client gửi lên , dùng hàm deleleOnce() của Model
app.delete("/api/laptop/:id", async (req, res) =>{
let id = Number(req.params.id);
const spModel = mongoose.model('san_pham', spSchema);
await spModel.deleteOne({id:id});
res.json({"thong_bao":"Đã xóa"})
})
Test với postman

Sử dụng mongoose trong NodeJS cũng đơn giản phải không nào. Cũng những vấn đề tương tự như khi làm việc với MySql thôi như select, xem, sửa xóa, thêm dữ liệu. Bạn có thể tham khảo thêm tại link sau: https://www.npmjs.com/package/mongoose , https://mongoosejs.com/docs/index.html