DANH MỤC: NODE.JS & MONGODB

Bài 4: Insert dữ liệu trên MongoDB bằng Node.js


Phần trước, mình đã hướng dẫn mọi người tạo mới một collection trong MongoDB rồi. Thì sau khi đã tạo được collection rồi bài này chúng ta sẽ cùng nhau tìm hiểu về các cách thêm dữ liệu với vào trong MongoDB bằng Node.js.

1, Tổng quan.

-Để có thể thêm được dữ liệu vào trong collection thì việc đầu tiên chúng ta cần phải làm là thiết lập sử dụng collection trong MongoDB. Và để làm được điều này thì các bạn sử dụng phương thức collection() cú pháp sau:

db.collection(collectionName);

Trong đó:

  • db là biến chứa data kết nối MongoDB.
  • collectionName là tên của collection mà các bạn muốn sử dụng.

VD1: Mình sẽ khai báo sử dụng collection products mà chúng ta vừa mới tạo ở bài trước.

var mongoClient = require('mongodb').MongoClient;
mongoClient.connect('mongodb://127.0.0.1:27017/nodedb', function(err, db) {
    if (err) throw err;
    //use product collection
    var products = db.collection('products');
    db.close();
});

2, Các cách thêm mới dữ liệu.

Thêm một bản ghi

-Để có thể thêm một document vào trong MongoDB thì các bạn sử dụng phương thức inserOne() với cú pháp sau:

collection.insertOne(data, options, callback);
//hoặc
collection.insertOne(data, callback);

Trong đó:

  • collection là obejct chứa data collection (khai báo ở phần1).
  • data là object chứa dữ liệu bạn cần thêm.
  • options là object chứa các thông số tùy chọn thêm (xem thêm). Thông số này không bắt buộc.
  • callback là tên của hàm mà các bạn muốn gọi khi thực thi lệnh, hoặc ở đây bạn có thể điều vào dạng closure function. Trong callback bạn có thể truyền vào 2 biến với chức năng như sau:
    • biến thứ nhất chứa thông báo lỗi nếu có.
    • biến thứ hai chứa dữ liệu trả về nếu có.

VD2: Mình sẽ thêm mới một sản phẩm vào trong collection products với callback là một closure function.

var mongoClient = require('mongodb').MongoClient;
mongoClient.connect('mongodb://127.0.0.1:27017/nodedb', function(err, db) {
    if (err) throw err;
    //use product collection
    var products = db.collection('products');
    var data = {
        name: "ao thun",
        price: 50000,
        category: "quan ao"
    }
    products.insertOne(data, function (err,res) {
        //neu xay ra loi
        if (err) throw err;
        //neu khong co loi
        console.log('Them thanh cong');
    });
    db.close();
});

VD3: Hoặc nếu callback là một hàm đã được khai báo sẵn.

var mongoClient = require('mongodb').MongoClient;
mongoClient.connect('mongodb://127.0.0.1:27017/nodedb', function(err, db) {
    if (err) throw err;
    //use product collection
    var products = db.collection('products');
    var data = {
        name: "ao thun",
        price: 50000,
        category: "quan ao"
    }
    products.insertOne(data, insertCall);
    db.close();
});
var insertCall = function(err, res) {
    //neu xay ra loi
    if (err) throw err;
    //neu khong co loi
    console.log('Them thanh cong');
};

Thêm mới nhiều bản ghi

-Để có thể thêm mới nhiều bản ghi vảo trong MongoDB bằn Node.js thì bạn sử dụng phương thức insertMany() với cú pháp như sau:

collection.insertMany(data, options, callback);
//hoac
collection.insertMany(data, callback);

Trong đó:

  • collection là obejct chứa data collection (khai báo ở phần1).
  • datamảng object chứa dữ liệu bạn cần thêm.
  • options là object chứa các thông số tùy chọn thêm (xem thêm). Thông số này không bắt buộc.
  • callback là tên của hàm mà các bạn muốn gọi khi thực thi lệnh, hoặc ở đây bạn có thể điều vào dạng closure function. Trong callback bạn có thể truyền vào 2 biến với chức năng như sau:
    • biến thứ nhất chứa thông báo lỗi nếu có.
    • biến thứ hai chứa dữ liệu trả về nếu có.

VD4: Mình sẽ thêm mới 3 sản phầm vào collection Products.

var mongoClient = require('mongodb').MongoClient;
mongoClient.connect('mongodb://127.0.0.1:27017/nodedb', function(err, db) {
    if (err) throw err;
    //use product collection
    var products = db.collection('products');
    var data = [
        { name: "ao phong", price: 75000, category: "quan ao" },
        { name: "giay the thao", price: 75000, category: "giay dep" },
        { name: "kinh", price: 375000, category: "Thoi trang" },
    ];
    products.insertMany(data, function (err,res) {
        //neu xay ra loi
        if (err) throw err;
        //neu khong co loi
        console.log('Them thanh cong');
    });
    db.close();
});

Thêm một hoặc nhiều dữ liệu

-Đối với cách này thì bạn có thể thêm một bản ghi hoặc nhiều bản ghi cũng được. Sử dụng với cú pháp:

collection.insert(data, options, callback);
//hoặc
collection.insert(data, callback);

Trong đó:

  • collection là obejct chứa data collection (khai báo ở phần1).
  • datamảng object nếu bạn muốn thêm nhiều dữ liệu, còn là object nếu bạn muốn thêm một dữ liệu.
  • options là object chứa các thông số tùy chọn thêm (xem thêm). Thông số này không bắt buộc.
  • callback là tên của hàm mà các bạn muốn gọi khi thực thi lệnh, hoặc ở đây bạn có thể điều vào dạng closure function. Trong callback bạn có thể truyền vào 2 biến với chức năng như sau:
    • biến thứ nhất chứa thông báo lỗi nếu có.
    • biến thứ hai chứa dữ liệu trả về nếu có.

VD5: Thêm một dữ liệu với phương thức insert

var mongoClient = require('mongodb').MongoClient;
mongoClient.connect('mongodb://127.0.0.1:27017/nodedb', function(err, db) {
    if (err) throw err;
    //use product collection
    var products = db.collection('products');
    var data = { name: "ao thun", price: 50000, category: "quan ao" }
    products.insert(data, function (err,res) {
        //neu xay ra loi
        if (err) throw err;
        //neu khong co loi
        console.log('Them thanh cong');
    });
    db.close();
});

VD6: Thêm mới nhiều dữ liệu với phương thức insert.

var mongoClient = require('mongodb').MongoClient;
mongoClient.connect('mongodb://127.0.0.1:27017/nodedb', function(err, db) {
    if (err) throw err;
    //use product collection
    var products = db.collection('products');
    var data = [
        { name: "ao phong", price: 75000, category: "quan ao" },
        { name: "giay the thao", price: 75000, category: "giay dep" },
        { name: "kinh", price: 375000, category: "Thoi trang" },
    ];
    products.insert(data, function (err,res) {
        //neu xay ra loi
        if (err) throw err;
        //neu khong co loi
        console.log('Them thanh cong');
    });
    db.close();
});

3, Dữ liệu trả về.

-Ở phần trên mình mới chỉ nói về tham số thứ 2 là biến chứa thông tin MongoDB trả về khi thực thi câu truy vấn mà chưa động đến nó xem nó có gì xảy ra nhỉ.

-Bây giờ chúng ta hãy cùng thực hiện insert một bản ghi vào trong MongoDBconsole.log(res) ra xem nó chứa những gì nhé!

var mongoClient = require('mongodb').MongoClient;
mongoClient.connect('mongodb://127.0.0.1:27017/nodedb', function(err, db) {
    if (err) throw err;
    var products = db.collection('products');
    var data = { name: "ao thun", price: 50000, category: "quan ao" }
    products.insert(data, function (err,res) {
        if (err) throw err;
        //console result
        console.log(res);
    });
    db.close();
});

Và đây là kết quả trả về:

{
    result: { ok: 1, n: 1 },
    ops: [{
        name: 'ao thun',
        price: 50000,
        category: 'quan ao',
        _id: 596f2c5c5e09d414c09f1c7b
    }],
    insertedCount: 1,
    insertedIds: [596f2c5c5e09d414c09f1c7b]
}

Như vậy chúng ta có thể thấy kết quả mà MongoDB trả về cho chúng ta là một object chứa các thông số và chức năng như sau:

  • result
    • ok - trạng thái của câu query. 1 là thành công.
    • n -  là số lượng bản ghi đã được thêm vào trong MongoDB.
  • ops - đây là danh sách các bản ghi đã được thêm.
  • insertedCount - chứa số lượng bản ghi đã được inserted.
  • insertedIds: chứa id của các bản ghi đã được thêm.

Và dựa vào obejc này thì các bạn hoàn toàn có thể truy vấn được các thông số trả về dựa vào đối tượng.

Chú ý: _id là một trường được MongoDB tự động thêm vào khi phát hiện bản ghi của bạn không số giá trị đó. Trường này giống như một khóa chính trong SQL, nó phải là duy nhất. Bạn cũng có thể custom giá trị của nó bằng cách tự điền giá trị cho nó:

VD:

{ _id: 1, name: "ao phong", price: 75000, category: "quan ao" },
{ _id: 2, name: "giay the thao", price: 75000, category: "giay dep" },
{ _id: 3, name: "kinh", price: 375000, category: "Thoi trang" }

4, Lời kết.

-Như vậy phần này mình đã giới thiệu đến mọi người ba cách thêm dữ liệu vào trong MongoDB bằng Node.js. Mọi người về ôn tập nhiều cho nó quen :D

Nguồn: Toidicode.com

Thông tin tác giả

Thanh Tai (thanhtaivtt)

Thanh Tai (thanhtaivtt)

The best way to learn is to teach

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia