Hướng dẫn mongodb://localhost:27017 - mongodb: // localhost: 27017

Nội dung bài viết

Nội dung chính ShowShow

  • Video học lập trình mỗi ngày
  • Bài học này bạn được những gì?
  • MongoDB create user
  • Enable MongoDB Auth
  • Restart mongo daemon (mongod)
  • MongoDB security
  • 1. Tạo kết nối với MongoDB trong NodeJs
  • 2. Thêm, sửa và lấy dữ liệu trên MongoDB
  • 3. Làm việc với MongoDB sử dụng module Mongoose ODM trong Node.js

Video học lập trình mỗi ngày

Bài học này bạn được những gì? từ xa hay từ một server khác đó là một mô hình bình thường hiện nay. Bài viết này sẽ hướng dẫn cho người mới làm quen với mongodb có thể làm được điều mà chỉ có những chuyên về admin mới làm được.

MongoDB create user

Enable MongoDB Auth

Bài học này bạn được những gì?

  • MongoDB create user
  • Enable MongoDB Auth
  • Restart mongo daemon (mongod)

MongoDB create user

Enable MongoDB Auth

> db.createUser( 
  {
    user: "new_user",
    pwd: "some_password",
    roles: [ { role: "readWrite", db: "anonystick" } ]
  }
)

Enable MongoDB Auth

Restart mongo daemon (mongod)

sudo vim /etc/mongod.conf

MongoDB security

# network interfaces
net:
    port: 27017
    bindIp: 127.0.0.1

1. Tạo kết nối với MongoDB trong NodeJs

2. Thêm, sửa và lấy dữ liệu trên MongoDB: Đừng có comment lại

# network interfaces
net:
    port: 27017
    bindIp: 127.0.0.1
8. Nếu bạn làm như vậy đồng nghĩa với việc bạn sẽ cho phép tất cả các nơi truy cập vào admin MongoDB của bạn.

3. Làm việc với MongoDB sử dụng module Mongoose ODM trong Node.js

anonystick:~# ip a |grep net
    inet 127.0.0.1/3 scope host lo
    inet6 xxxx scope host 
    inet 12.13.14.15/23 brd xxxxx scope global dynamic ens3
    inet6 xxxxx/64 scope link

Connect server MongoDB từ xa hay từ một server khác đó là một mô hình bình thường hiện nay. Bài viết này sẽ hướng dẫn cho người mới làm quen với mongodb có thể làm được điều mà chỉ có những chuyên về admin mới làm được.

# network interfaces
net:
    port: 27017
    bindIp: 127.0.0.1,12.13.14.15

Bài viết này có trong Series - Mongodb.

Restart mongo daemon (mongod)

MongoDB security

sudo service mongod restart

1. Tạo kết nối với MongoDB trong NodeJs

tail -f /var/log/mongodb/mongod.log

2. Thêm, sửa và lấy dữ liệu trên MongoDB

3. Làm việc với MongoDB sử dụng module Mongoose ODM trong Node.js

mongo -u ian -p secretPassword 12.13.14.15/abc

MongoDB security

1. Tạo kết nối với MongoDB trong NodeJs

2. Thêm, sửa và lấy dữ liệu trên MongoDB

3. Làm việc với MongoDB sử dụng module Mongoose ODM trong Node.js

Connect server MongoDB từ xa hay từ một server khác đó là một mô hình bình thường hiện nay. Bài viết này sẽ hướng dẫn cho người mới làm quen với mongodb có thể làm được điều mà chỉ có những chuyên về admin mới làm được.

Bài viết này có trong Series - Mongodb.

1. Tạo kết nối với MongoDB trong NodeJs

2. Thêm, sửa và lấy dữ liệu trên MongoDB

 > npm install mongodb

3. Làm việc với MongoDB sử dụng module Mongoose ODM trong Node.js

//lets require/import the mongodb native drivers.
var mongodb = require('mongodb');

//We need to work with "MongoClient" interface in order to connect to a mongodb server.
var MongoClient = mongodb.MongoClient;

// Connection URL. This is where your mongodb server is running.
var url = 'mongodb://localhost:27017/my_database_name';

// Use connect method to connect to the Server
MongoClient.connect(url, function (err, db) {
  if (err) {
    console.log('Unable to connect to the mongoDB server. Error:', err);
  } else {
    //HURRAY!! We are connected. :)
    console.log('Connection established to', url);

    // do some work here with the database.

    //Close connection
    db.close();
  }
});

Connect server MongoDB từ xa hay từ một server khác đó là một mô hình bình thường hiện nay. Bài viết này sẽ hướng dẫn cho người mới làm quen với mongodb có thể làm được điều mà chỉ có những chuyên về admin mới làm được.mongodb://localhost:27017/my_database_name) và tiếp theo chạy file này với node, chúng ta sẽ có thể kết nối tới database server.

Ok, phân tích những code trên, chúng ta chia chương trình thành những bước hợp lý sau:

  • Load mongodb module: Chúng ta yêu cầu để load mongodb module trong code của chúng ta. MongoDB sẽ biểu diễn 'native mongodb dỉivers' cho Node.js.: Chúng ta yêu cầu để load mongodb module trong code của chúng ta. MongoDB sẽ biểu diễn 'native mongodb dỉivers' cho Node.js.
sudo vim /etc/mongod.conf
0
  • Định nghĩa url cần để kết nối tới: Chúng ta cần để biết nơi mà mongodb server đang chạy. Url chỉ ra nơi đặt instance của mongodb đang chạy, server mà chúng ta có thể kết nối đến nó. Url cũng bao gồm tên database mà chúng ta dự định kết nối đến.: Chúng ta cần để biết nơi mà mongodb server đang chạy. Url chỉ ra nơi đặt instance của mongodb đang chạy, server mà chúng ta có thể kết nối đến nó. Url cũng bao gồm tên database mà chúng ta dự định kết nối đến.
sudo vim /etc/mongod.conf
1
  • Kết nối tới database: Hãy sử dụng MongoClient interface để kết nối đến database. Trong hàm callback chúng ta nhận error hoặc db object. Chúng ta sử dụng db object để giao tiếp với database.: Hãy sử dụng MongoClient interface để kết nối đến database. Trong hàm callback chúng ta nhận error hoặc db object. Chúng ta sử dụng db object để giao tiếp với database.
sudo vim /etc/mongod.conf
2

2. Thêm, sửa và lấy dữ liệu trên MongoDB

Bây giờ bạn có một kết nối db đã sẵn sàng, hãy quan sát làm thế nào chúng ta có thể thực hiện một vài thao tác cơ bản trên MongoDB.

Có hai điều cần quan tâm khi sử dụng mongodb native driver:

  • Tên truy vấn và tham số của chúng là tương tự như những lệnh mongodb gốc.
  • Tất cả những hàm truy vấn này nắm giữ hàm callback là đối số cuối cùng. Hàm callback đối xử tham số đầu tiên như error và tham số thứ hai như kết quả thành công. Kết quả là là kết quả hay đầu ra được cung cấp bởi mongodb đang chạy những lệnh này. Nó là quen thuộc với những gì bạn thấy nếu bạn đã chạy những truy vấn này trên mongodb shell.

2.1 Insert

Hãy giả sử rằng chúng ta cần để tạo một tập hợp các users và lưu một vài users. Ví dụ chúng ta sử dụng hàm insert để lưu thông tin user.

sudo vim /etc/mongod.conf
3

Trong code trước chúng ta đã làm theo các bước sau:

  • Nhận tham chiếu của collection 'users': Chúng ta đã sử dụng phương thức db.collection để nhận tham chiếu của bảng 'users' (hay còn gọi là users collection). Nếu collection chưa tồn tại, tiếp theo nó sẽ được tạo mới trước khi insert. Nếu nó đã tồn tại, bạn sẽ làm việc trên cái đó. Bạn không cần để một lệnh riêng biệt tạo một collection.: Chúng ta đã sử dụng phương thức db.collection để nhận tham chiếu của bảng 'users' (hay còn gọi là users collection). Nếu collection chưa tồn tại, tiếp theo nó sẽ được tạo mới trước khi insert. Nếu nó đã tồn tại, bạn sẽ làm việc trên cái đó. Bạn không cần để một lệnh riêng biệt tạo một collection.
sudo vim /etc/mongod.conf
4
  • Chuẩn bị dữ liệu thêm mới: Chúng ta đã tạo một vài ví dụ đối tượng bản ghi user, được đặt tên là user1, user2 và user3. Cấu trúc của document là không cố định, chúng đơn giản là những đối tượng JS với dữ liệu của entity.: Chúng ta đã tạo một vài ví dụ đối tượng bản ghi user, được đặt tên là user1, user2 và user3. Cấu trúc của document là không cố định, chúng đơn giản là những đối tượng JS với dữ liệu của entity.

  • Thêm mới tới database: Chúng ta đã sử dụng phương thức collection.insert để thêm mới dữ liệu trong collection của database. Chúng ta đã truyền một mảng của users và nó được lưu tất cả chúng trong một bước. Nếu chúng ta cần lưu chỉ một document (1 thông tin user), thì chúng ta có thể truyền trong hàm insert mình user đó, ví dụ collection.insert(user1, callback).: Chúng ta đã sử dụng phương thức collection.insert để thêm mới dữ liệu trong collection của database. Chúng ta đã truyền một mảng của users và nó được lưu tất cả chúng trong một bước. Nếu chúng ta cần lưu chỉ một document (1 thông tin user), thì chúng ta có thể truyền trong hàm insert mình user đó, ví dụ collection.insert(user1, callback).

sudo vim /etc/mongod.conf
5
  • Callback: Hàm callback cho phương thức insert có hai tham số, đầu tiên là error và còn lại là result. Nếu có một lỗi, tiếp theo đối tượng lỗi sẽ có error chi tiết hoặc ngược lại sẽ là null. Result sẽ là một mảng các documents đã được lưu.: Hàm callback cho phương thức insert có hai tham số, đầu tiên là error và còn lại là result. Nếu có một lỗi, tiếp theo đối tượng lỗi sẽ có error chi tiết hoặc ngược lại sẽ là null. Result sẽ là một mảng các documents đã được lưu.

2.2 Update

Để cập nhật những bản ghi chúng ta sử dụng hàm collection.update. Tên và các tham số của hàm update là tương tự những truy vấn gốc của mongodb. Hãy quan sát một ví dụ bên dưới:

sudo vim /etc/mongod.conf
6

2.3 Query

Tiếp theo, hãy lấy dữ những documents từ mongodb. Để làm điều này chúng ta có thể gọi hàm find trên đối tượng collection như chúng ta làm trên mongodb shell. Đây là một ví dụ:

sudo vim /etc/mongod.conf
7

Ví dụ trên bạn có thể thấy chúng ta đã sử dụng .toArray được nối với find bởi vì việc chạy hàm find chỉ trả về một con trỏ db. Tiếp theo chúng ta phải lặp trên con trỏ và lấy kết quả trả về. Lý do cho điều này là vì hiệu suất, mặc định mongodb không lấy đầy đủ bản ghi dữ liệu. Việc sử dụng toArray nói driver rằng chúng ta muốn đầy đủ dữ liệu của mỗi user, cái mà tiếp theo được trả về.

3. Làm việc với MongoDB sử dụng module Mongoose ODM trong Node.js

MongooseJS là một thư việc rất phổ biến trong Node.js, thư viện này cung cấp một sự rành mạch, giải pháp schema-based để đối tượng hóa dữ liệu ứng dụng của bạn và bao gồm built-in type casting, validation, query, building, business logic và nhiều thứ khác. Việc sử dụng mongoose bạn có thể làm việc với mongodb giống như một chuyên gia. Mongoose đơn giản để làm việc với mongodb và tăng độ tin cậy với những tính năng tự đông kết nối và quản lý connection pool. Để làm việc với mongoose chúng ta cần cài đặt module mongoose, dùng lệnh:

sudo vim /etc/mongod.conf
8

Bây giờ, chúng ta sẽ cố gắng viết lại những ví dụ ở trên sử dụng mongoose

sudo vim /etc/mongod.conf
9

Trong code trên chúng ta đã làm theo những bưowcs sau:

  • Kết nối tới database: Chúng ta đã sử dụng hàm mongoose.connect để kết nối database. MongooseJS tiếp theo sẽ xử lý connection và connection pool như đã cấu hình.: Chúng ta đã sử dụng hàm mongoose.connect để kết nối database. MongooseJS tiếp theo sẽ xử lý connection và connection pool như đã cấu hình.
  • Tạo Model: Chúng ta tạo một Model sử dụng hàm mongoose.model. Model biểu diễn một collection trong database. Tên mà chúng ta cung cấp sẽ được ngầm định số nhiều hóa. Ví dụ, trong trường hợp của chúng ta nếu tên của model là User, thì collection sẽ có tên là users (chữ thường). Chúng ta cũng định nghĩa schema cho document trong xử lý này.: Chúng ta tạo một Model sử dụng hàm mongoose.model. Model biểu diễn một collection trong database. Tên mà chúng ta cung cấp sẽ được ngầm định số nhiều hóa. Ví dụ, trong trường hợp của chúng ta nếu tên của model là User, thì collection sẽ có tên là users (chữ thường). Chúng ta cũng định nghĩa schema cho document trong xử lý này.
# network interfaces
net:
    port: 27017
    bindIp: 127.0.0.1
0
  • Tạo mới đối tượng User: Chúng ta đã tạo một đối tượng user mới sử dụng model của chúng ta. Chúng ta có thể tạo nhiều đối tượng usẻ sử dụng model, và mỗi đối tượng sẽ trình diễn một document trong database.: Chúng ta đã tạo một đối tượng user mới sử dụng model của chúng ta. Chúng ta có thể tạo nhiều đối tượng usẻ sử dụng model, và mỗi đối tượng sẽ trình diễn một document trong database.
# network interfaces
net:
    port: 27017
    bindIp: 127.0.0.1
1
  • Lưu user sử dụng hàm 'save': Mongoose model có nhiều phương thức sẵn có trên đối tượng entity. Trong trường hợp này, chúng ta đã sử dụng phương thức save để lưu document trong database. Chúng ta cũng có thể sử dụng Model để query database. Để query collection chúng ta có thể sử dụng Model đã định nghĩa để làm điều đó. Hãy xem ví dụ bên dưới:: Mongoose model có nhiều phương thức sẵn có trên đối tượng entity. Trong trường hợp này, chúng ta đã sử dụng phương thức save để lưu document trong database. Chúng ta cũng có thể sử dụng Model để query database. Để query collection chúng ta có thể sử dụng Model đã định nghĩa để làm điều đó. Hãy xem ví dụ bên dưới:
# network interfaces
net:
    port: 27017
    bindIp: 127.0.0.1
2

Để có thêm thông tin về Mongoose bạn có tham khảo ở website mongoosejs.com

4. Kết

Trong bài viết này các bạn đã học làm thế nào sử dụng được MongoDB Node.js drivers để tương tác với database. Chúng ta đã thấy làm thế nào để insert/update/query và sử dụng db cursors một cách cơ bản. Đồng thời bạn cũng có một hiểu biết sơ bộ về MongooseJS. Hy vọng những điều này sẽ giúp ích cho các bạn.

Tham khảo:

NODE.JS TUTORIAL: USING MONGODB