-Mongoose được hiểu đơn giản là một thư viện của node.js để kết nối tới cơ sở dữ liệu mongodb.Object Data Mapping – Mongoose (ODM) hiểu là kết nối hướng đối tượng và lúc đó Mongoose kết nối dữ liệu và truyền ra javascript ( ở đây là Node.js ) dưới dạng đối tượng cho chúng ta sử dụng.Như hướng dẫn kết nối tới mongodb ở bài trước : https://smartjob.vn/node-js-va-mongodb-huong-dan-ket-noi nhưng dữ liệu truyền về node.js ( javascipt ) ở dạng array để sử dụng bài viết này tiếp theo để hướng dẫn chúng ta kết nối ở dạng Object .
-Trước đi tới phần thực hành các ví dụ bạn đọc nên đọc qua các bài trước từ và nên nhớ rằng trước đó chúng ta phải khởi động bật cơ sở dữ liệu Mongodb lên để thao tác với nó .Link hướng dẫn đã có trong bài : https://smartjob.vn/huong-dan-dung-robomongo-quan-ly-mongodb/
A. Bật kết nối mongodb bằng Robomongo tới db test màn hình hiển thị như sau:
1. Chúng ta tạo cấu trúc thư mục như sau : fodelr node_mongose
file :mongose_node.js
2. Cài đặt Mongoose
Dùng Cmd trỏ tới thư mục bạn tạo chứa file mongose_node.js ở đây là foder : node_mongose và gõ lệnh sau
npm install mongoose
Sau khi cài đặt thành công thì hiển thị màn hình sau :
>>>Tìm hiểu thêm kiến thức về lập trình tại:
- Công nghệ JSF trong JavaEE
- Các ngôn ngữ lập trình phổ biến nhất 2015
- Truy vấn MongoDB bằng PHP
3. Nội dung file : mongose_node.js
1
2
3
4
5
6
7
8
9
10
|
var mongoose = require(‘mongoose’);
var db = mongoose.connection;
db.on(‘error’, console.error);
db.once(‘open’, function () {
// tạo kết nối tới collection ,schemas ,models tại đây — smartjob.vn
});
mongoose.connect(‘mongodb://localhost/test’);
|
Đây là bộ khung cơ bản cho các bạn hiểu về kết nối kiểu mongoose
Sau đây mình giải thích cơ bản về kiểu schemas và model là 2 khái niệm bắt buộc phải biết khi kết nối bằng Mongoose
-schemas : chúng ta hiểu đơn giản là là cấu trúc dữ liệu tương ứng với 1 coleection so sánh với mysql thì hiểu như là thiết kế dữ liệu cho 1 bảng ví dụ như trường : Id kiểu dữ liệu là int phía sau có ví dụ để chúng ta hiểu rõ hơn
Các kiểu dữ liệu của schemas
- String
- Number
- Date
- Buffer
- Boolean
- Mixed
- ObjectId
- Array
-model: được sử dụng như khai báo các giá trị lưu trữ trong document
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
var mongoose = require(‘mongoose’);
var db = mongoose.connection;
db.on(‘error’, console.error);
db.once(‘open’, function () {
// tạo schemas and models ở đây.
var smartjobSchema = new mongoose.Schema({
title: { type: String }, skill: String, phone: Number, hasPublic: Boolean
});
// Tạo ra a ‘Smartjob’ model using the movieSchema as the structure.
// Mongoose cũng sẽ tạo ra 1 collection smartjobs called ‘Smarjob’ cho documentmowis được tạo này.
var Smartjob = mongoose.model(‘Smartjob’, smartjobSchema);
var thor = new Smartjob({
title: ‘Thor’, skill: ‘PG-13’, phone: ‘2011’ // ở đây sử dụng string thay vì Number thì Mongoose sẽ tự convert sang Number cho bạn
, hasPublic: true
});
thor.save(function (err, thor) {
if (err) return console.error(err);
console.dir(thor);
});
});
mongoose.connect(‘mongodb://localhost/test’);
|
Kết quả tạo ra như sau:
Mọi người chú ý ở dòng 13 thì Smartjob là model khởi tạo sau đó Mongoose sẽ tự tạo thêm colection tương ứng với mongoose đo nhưng mà có tên là smartjobs . Các bạn chú ý dùng lênh ctrl c để dừng tiến trình trong cửa sổ lệnh CMD
Liệt kê tất cả các document trong colections : smartjobs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
var mongoose = require(‘mongoose’);
var db = mongoose.connection;
db.on(‘error’, console.error);
db.once(‘open’, function () {
// tạo schemas and models ở đây.
var smartjobSchema = new mongoose.Schema({
title: { type: String }, skill: String, phone: Number, hasPublic: Boolean
});
// tao model smarjob tương ứng với schema đã khai báo bên trên
var Smartjob = mongoose.model(‘Smartjob’, smartjobSchema);
// Find all .
Smartjob.find(function (err, data) {
if (err) return console.error(err);
console.dir(data);
});
});
mongoose.connect(‘mongodb://localhost/test’);
|
Tìm 1 document
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
var mongoose = require(‘mongoose’);
var db = mongoose.connection;
db.on(‘error’, console.error);
db.once(‘open’, function () {
// tạo schemas and models ở đây.
var smartjobSchema = new mongoose.Schema({
title: { type: String }, skill: String, phone: Number, hasPublic: Boolean
});
// tao model smarjob tương ứng với schema đã khai báo bên trên
var Smartjob = mongoose.model(‘Smartjob’, smartjobSchema);
// Find one
Smartjob.findOne({ title: ‘nguyen van tuan’ }, function(err, data) {
if (err) return console.error(err);
console.dir(data);
});
});
mongoose.connect(‘mongodb://localhost/test’);
|
Tìm theo điều kiện :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
var mongoose = require(‘mongoose’);
var db = mongoose.connection;
db.on(‘error’, console.error);
db.once(‘open’, function () {
// tạo schemas and models ở đây.
var smartjobSchema = new mongoose.Schema({
title: { type: String }, skill: String, phone: Number, hasPublic: Boolean
});
// tao model smarjob tương ứng với schema đã khai báo bên trên
var Smartjob = mongoose.model(‘Smartjob’, smartjobSchema);
Smartjob.find({ hasPublic: true,title: “nguyen van tuan” }, function (err, data) {
if (err) return console.error(err);
console.dir(data);
});
});
mongoose.connect(‘mongodb://localhost/test’);
|
Một số truy vấn:(các giá trị value có thể do bạn thay đổi)
1
|
Smartjob.find({ size: ‘small’ }).where(‘createdDate’).gt(oneYearAgo).exec(callback);
|
gt : lớn hơn
1
2
3
4
|
Smartjob.remove({ size: ‘large’ }, function (err) {
if (err) return handleError(err);
// removed!
});
|
Update:
1
2
3
4
5
|
var query = { name: ‘borne’ };
Model.findOneAndUpdate(query, { name: ‘jason borne’ }, options, callback)
// is sent as
Model.findOneAndUpdate(query, { $set: { name: ‘jason borne’ }}, options, callback)
|
Tải sorce code tại đây
Skype: nguyenanhdung90
strongmindinstrongbody-expert at Smartjob.vn
mognodb,
mongose,
node.js,