Bài 5-Kết nối và truy vấn dữ liệu MongoDB bằng C#

bài số 4 các bạn đã biết cách tải và tham chiếu driver tương tác MongoDB trong C# rồi. Ở bài này chúng ta tiếp tục học cách kết nối và truy vấn dữ liệu MongoDB thông qua các Driver đó (bạn mở lại Project WPF trong bài số 4).

Mục tiêu bài này các bạn phải kết nối hiển thị được dữ liệu trong bảng Product lên giao diện Listbox trong WPF như dưới đây:

Bước 1:

Làm thế nào để Kết nối dữ liệu MongoDB bằng C#?

Để kết nối tới MongoDB ta dùng lệnh sau:

[code language=”csharp”]

//tham chiếu thư viện này:
using MongoDB.Driver;
//Dùng MongoClient để kết nối tới Server
MongoClient client = new MongoClient(“mongodb://localhost:27017”);
//Dùng lệnh GetDatabase để kết nối Cơ sở dữ liệu
IMongoDatabase database = client.GetDatabase(“QuanLySanPham”);

[/code]

Các Em lưu ý lệnh:

mongodb://localhost:27017

Là cú pháp kết nối lên Server. Chúng ta chỉ đổi localhost thành tên Server(địa chỉ IP) và Port. Còn mọi thứ phải giữ nguyên. Đây là bản Standalone, nếu bạn đang dùng Replica Set thì thay đổi khác chút xíu (Đây là phần nâng cao, khoan hãy quan tâm).

Lệnh:

client.GetDatabase(“QuanLySanPham“);

Dùng để kết nối tới Cơ sở dữ liệu tên là QuanLySanPham, do đó bạn muốn kết nối tới Cơ sở dữ liệu khác thì đổi tên chỗ này là xong.

Bước 2:

Truy vấn dữ liệu, trong bài này ta sẽ truy vấn bảng Product nha.

[code language=”csharp”]

//Gọi hàm GetCollection để truy suất bảng dữ liệu
IMongoCollection collection = database.GetCollection(“Product”);
//Muốn truy vấn toàn bộ dữ liệu trong bảng dùng lệnh dưới đây:
List documents = collection.Find(new BsonDocument()).ToList();

[/code]

Để lấy dữ liệu từng đối tượng (JSON, vì sao nó là JSon thì các Em xem lại các bài trước, hoặc ở đây) trong documents ra ta làm như sau:

[code language=”csharp”]

//Các em có thể hiểu document là 1 đối tượng đang duyệt (là Json) trong tập các Json được lưu trong biến documents
foreach (BsonDocument document in documents)
{
//Cột Ma (là thuộc tính Ma của đối tượng Product đang duyệt) có kiểu chuỗi
string ma = document[“Ma”].AsString;
//Cột Ten (là thuộc tính Ten của đối tượng Product đang duyệt) có kiểu chuỗi
string ten = document[“Ten”].AsString;
//Cột DonGia (là thuộc tính DonGia của đối tượng Product đang duyệt) có kiểu Double
double gia = document[“DonGia”].AsDouble;

}

[/code]

Coding chi tiết:

-Phần XAML (MainWindow.xaml):

[code language=”XML”]

[/code]

-Phần Coding(MainWindow.xaml,cs):

[code language=”csharp”]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using MongoDB.Bson;
using MongoDB.Driver;

namespace CSharpMongoDBExample
{
///

/// Interaction logic for MainWindow.xaml
///

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void btnGetProduct_Click(object sender, RoutedEventArgs e)
{
MongoClient client = new MongoClient(“mongodb://localhost:27017”);
IMongoDatabase database = client.GetDatabase(“QuanLySanPham”);

IMongoCollection collection = database.GetCollection(“Product”);
List documents = collection.Find(new BsonDocument()).ToList();
lstProduct.Items.Clear();
foreach (BsonDocument document in documents)
{
string ma = document[“Ma”].AsString;
string ten = document[“Ten”].AsString;
double gia = document[“DonGia”].AsDouble;
lstProduct.Items.Add(ma + “\t” + ten + “\t” + gia);
}

}
}
}

[/code]

Chạy lên ta sẽ kết quả như mong muốn!

Bạn có thể tải source code của bài này tại đây: Source code here

Bài sau ta sẽ nghiên cứu cách thức tải dữ liệu lớn từ MongoDB về client

Các khóa học online khác, bạn có thể tham khảo tại đây:

https://unica.vn/?aff=11929

Chúc các bạn thành công!

Bài 4-Driver .Net cho MongoDB và cách tham chiếu trong C#

Như đã nói ở các bài học trước. Tui sẽ lần lượt trình bày cách tương tác dữ liệu với MongoDB bằng C#, Android, NodeJs.. C# (.Net) là một trong những ngôn ngữ quen thuộc và dễ sử dụng với các bạn nên Tui hướng dẫn trước, tuy nhiên Tui dùng WPF (Windows Presentation Foundation) để hiển thị dữ liệu thay vì Winform, Android sẽ dùng Kotlin. Bạn nào quan tâm tới WPF thì sắp tới Tui sẽ ra 2 Khóa học Cơ bản + Nâng cao về WPF các bạn có thể theo dõi trên https://unica.vn/?aff=11929.

Để tải Driver .Net cho MongoDB ta vào link sau: https://github.com/mongodb/mongo-csharp-driver/releases, tính tới ngày 28/05/2018 thì phiên bản của Driver này là v2.6.1

tải bản CSharpDriver-2.6.1.zip về, giải nén ra ta sẽ lấy các DLL trong thư mục net45:

Bây giờ ta mở Visual Studio 2017 lên, tạo một Project C# (dùng WPF), đặt tên : CSharpMongoDBExample, chép thư mục chứa dll tên là net45 ở trên vào Project:

Bấm OK để tạo Project, sau khi tạo xong ta chép thư mục net45 vào Project:

Sau đó Ta tiến hành tham chiếu vào Project như sau: Bấm chuột phải vào Reference==>chọn Add Reference:

Màn hình lựa chọn tham chiếu hiển thị lên, ta chọn Browswer:

chọn Nút Browse  ở phía dưới màn hình để tới DLL:

Chọn tất tần tật các DLL ở trên (select all) rồi bấm ADD:

Các thư viện (DLL) sẽ được hiển thị trong này, Ta bấm OK để hoàn tất tham chiếu Driver kết nối MongoDB cho C#. Kết quả  sau khi tham chiếu:

Tiếp theo ta cần làm bước tham chiếu: InteropServices  bằng lệnh sau:

Vào Menu Tools ==> chọn Nuget Package Manager ==> Chọn Package Manager Console

Bạn quan sát màn hình Package Manager Console sẽ hiển thị ra như bên dưới có dấu nhắc lệnh PM>

Ta gõ lệnh sau vào:

Install-Package System.Runtime.InteropServices.RuntimeInformation

Nhấn Enter để cài đặt và chờ cho nó hoàn tất, ta sẽ thấy kết quả như hình dưới đây:

Tới đây ta đã tham chiếu xong mọi thứ. C# đã sẵn sàng chiến đấu với MongoDB được rồi. Các bài sau ta sẽ tiến hành kết nối, truy suất và tương tác dữ liệu.

Các khóa học online khác, bạn có thể tham khảo tại đây:

https://unica.vn/?aff=11929

Chúc các bạn thành công!

Bài 3-Cách sử dụng MongoDB Compass

Trong bài số 2, các bạn đã biết cách cấu hình Service để chạy MongoDB 24/7 cũng như kết nối được MongoDB Compass tới Server.

Bài này Tui tiếp tục trình bày ở mức sử dụng cơ bản công cụ Compass để các bạn có thể tạo được cơ sở dữ liệu, collection, document…

1- Kết nối Compass tới Server

Khởi động MongoDB compass lên (lúc cài đặt xong bạn thấy có short cut ở Desktop, nếu không thấy thì tự tìm nha). Có rất nhiều mục trong màn hình nhập thông tin. Bạn quan tâm 2 thông số thôi, đó là Hostname và port:

Hostname: Nhập là localhost. Lưu ý nếu remote từ xa thì trong bài cấu hình Service bạn sử dụng IP và mục hostname này ta thay bằng IP nha.

Port: Nhập 27017 là port ta thiết lập trong bài cấu hình Service

Sau đó Bấm Connect để kết nối tới Server. Tuy nhiên lâu lâu bấm kết nối không được(mặc dù trước đó được), là nhiều khi do máy tính của bạn cùi bắp nó không kịp tự động bật Service lên–>Bạn phải vào Service của Windows để bật (start) lên, minh họa nếu bạn gặp trường hợp này thì làm như sau:

Khi kết nối thành công, ta có giao diện như dưới đây:

2- Tạo Cơ sở dữ liệu

Một vài thuật ngữ nho nhỏ ta cần nắm khi làm với MongoDB, ta có thể hiểu:

Cluster: Server hay cụm mà ta dùng để quản lý Cơ sở dữ liệu

Database: Cơ sở dữ liệu

Collection: Là bảng trong cơ sở dữ liệu

Document: Là từng dòng dữ liệu trong Collection. Dữ liệu có định dạng là JSON

Lưu ý là không có các mối quan hệ ràng buộc (Relationship) như trong các hệ quản trị của Microsoft SQL. Các bạn có thể hiểu MongoDB là một trong những hệ sinh thái của NoSQL. Ta xử lý nó bằng cách lưu trữ tham chiếu các thuộc tính của đối tượng trong JSON.

Để tạo Cơ sở dữ liệu, ta bấm vào mục “My Cluster” ở thanh Panel bên trái màn hình trước==>sau đó nhấn vào nút “Create Database”:

Database Name(Tên cơ sở dữ liệu): Ta đặt tên QuanLySanPham

Collection Name (tên bảng): Ta đặt Product

Sau đó bấm CREATE DATABASE để tạo Cơ sở dữ liệu.

Màn hình sau khi tạo Cơ sở dữ liệu thành công:

Trong bước tạo Cơ sở dữ liệu, ta đã tạo một bảng ban đầu(Mongo gọi là Collection) tên Product. Giờ ta thử click vào Cơ sở dữ liệu QuanLySanPham để xem Collection này nhé:

3. Tạo Collection

Để tạo thêm Collection ta bấm vào “Create Collection” (lưu ý nó là Bảng trong cơ sở dữ liệu truyền thống như là Microsoft SQL Server):

Ta thử đặt tên Collection mới là “Employee” rồi nhấn nút “CREATE COLLECTION“. Ta được kết quả như dưới đây:

4. Tạo Document

Document là từng dòng dữ liệu. Trong MongoDB, Document có định dạng là 1 JSON, rất hay và rất linh động, ta có thể dễ dàng tùy biến.

Giờ ta click vào Product để tạo Document cho nó nhé:

Trong màn hình trên có nút “INSERT DOCUMENT” ta bấm vào để tạo:

Mặc định màn hình Insert Document sẽ như trên, mỗi một Document như vậy Mongo mặc nhiên tạo một _id để làm định danh cho từng tài liệu và thường chúng không có trùng nhau (hiểu như là Khóa chính).

Để thêm các thuộc tính còn lại thì ta quan sát dòng số 2 nó đang lòi ô nhập cho ta, cứ thế nhập vào, nó tự động thêm các dòng khác cho ta tạo:

Muốn đổi kiểu dữ liệu cho các thuộc tinh ta làm như sau:

Ở trên Tui đổi kiểu dữ liệu của DonGia qua Double

để xóa thuộc tính mình không muốn nữa thì bấm vào biểu tượng xóa ở bên trái của mỗi thuộc tính.

Sau khi nhập đầy đủ các dữ liệu cho Document, ta bấm Insert, kết quả:

Cứ tiếp tục như vậy, bạn nhập thêm một số Document khác nữa nha:

Để chỉnh sửa dữ liệu, ta rê chuột vào từng dòng Document:

Nó sẽ có 4 Núm, thứ tự: Chỉnh sửa, sao chép vào clipboard, Clone document và Xóa. Tùy vào mục đích sử dụng mà bạn chọn lựa 4 núm này để thao tác.

5. Filter, Project, Sort:

Mongo Compass còng cung cấp cho ta chức năng lọc dữ liệu (filter), lọc thuộc tính (project), sắp xếp..

Như vậy ta đã hướng dẫn xong bài cách sử dụng MongoDB Compass, các bạn chú ý thao tác nhiều để cho quen thuộc nhé. Bài tiếp theo Tui sẽ trình bày cách thức sử dụng .NET (C#) để kết nối trực tiếp tới cơ sở dữ liệu MongoDB này như thế nào, sau khi xong C# ta sẽ dùng Android để kết nối, sau khi xong android ta qua NodeJS để tạo các Restful Web Service cho nó.

Các khóa học online khác, bạn có thể tham khảo tại đây:

https://unica.vn/?aff=11929

Chúc các bạn thành công!

Bài 2-Cách cấu hình Service cho MongoDB

bài số 1, Tui đã hướng dẫn các bạn cách tải và cài đặt MongoDB Enterprise Server và Compass rồi, tuy nhiên nó chưa chạy được. Ta cần cấu hình Service cho MongoDB để nó tự động chạy khi máy tính mở, cũng như luôn start 24/7. Các bạn thực hiện y xì theo 4 bước như Tui hướng dẫn trong này là OK á.

Bước 1:
Tạo 2 thư mục trong ổ C (ổ nào là tùy ý ta):

C:/data/db

C:/data/log

Hình minh họa:

Bước 2: Tạo file cấu hình tên là mongod.cfg, lưu vào nơi cài đặt MongoDB Server (C:\Program Files\MongoDB\Server\3.6), xem hình chụp dưới đây (ta cứ tạo 1 file txt bình thường, nhập liệu xong đổi đuôi thành cfg):

Nội dung file cấu hình như dưới đây. Chú ý port mặc định là 27017,

bindIp lấy localhost, 127.0.0.1 đồng thời lấy Ip của máy server hiện tại đang cài đặt MongoDB (10.11.35.45 là địa chỉ IP của máy Server mà bạn cài Mongo, cấu hình như thế này thì mới Remote connection được, vì mặc định Mongo cấm remote connection. Lưu ý nếu bạn chỉ cấu hình trên laptop, máy tính để bàn thì chỉ được phép chứa localhost, 127.0.0.1). Chú ý nếu nhập không đúng Ip, start Service sẽ bị báo lỗi:

# network interfaces
net:
  port: 27017
  bindIp: localhost,127.0.0.1,10.11.35.45
systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db

path và dbpath ta đã tạo ở bước 1.

Nếu không biết gõ lệnh thì có thể tải mẫu script ở đây rồi sửa lại IP Mongod.cfg

Bước 3: Cài đặt MongoDB Service

Mở Command line dưới quyền Admistrator, chạy lệnh sau:

Chi tiết lệnh (các bạn copy vào):

“C:\Program Files\MongoDB\Server\3.6\bin\mongod.exe” –config “C:\Program Files\MongoDB\Server\3.6\mongod.cfg” –install

Bước 4: Chạy Service MongoDB

gõ lệnh: net start MongoDB

Các bận thấy nó báo như bên dưới là thành công

Sau khi chạy Service thành công, bạn có thể kiểm tra lại bằng cách vào Service của Windows:

Như vậy ta đã cấu hình chạy thành công Service cho MongoDB.

Bây giờ có thể kết nối vào MongoDB bằng công cụ Compass:

Nhập đúng Hostname (localhost hoặc 127.0.0.1 hoặc IP của Public server của bạn) + port (27017) rồi bấm CONNECT, kết quả (vì máy Tui có sẵn một số CSDL nên bạn thấy như bên dưới, còn của bạn lần đầu thì nó trống trơn chỗ đó):

Như vậy ta cấu hình và chạy Service MongoDB thành công

Bài học sau Tui sẽ hướng dẫn cách sử dụng Compass cơ bản, để các bạn có thể biết cách tạo Cơ sở dữ liệu, collection, document…. cũng như một số thao tác tìm kiếm.

Các khóa học online khác, bạn có thể tham khảo tại đây:

https://unica.vn/?aff=11929

Chúc các bạn thành công

Bài 1-Giới thiệu MongoDB và cách cài đặt

Nhiều bạn hỏi về NodeJs, MongoDB. Cách tương tác C# với MongoDB, cách tương tác Mobile Android với MongoDB, cách tạo Web Service với Nodejs….Vì vậy Tui quyết định làm một số bài hướng dẫn nho nhỏ cho các bạn trong page này, để hiểu, cài đặt và sử dụng được MongoDB ở mức cơ bản, cũng như lập trình và cài đặt Webserver được cho NodeJs, tương tác C# và Android với MongoDB bằng NodeJS. Các bạn quan tâm có thể theo dõi từng bài trong các series này.

Tính tới thời điểm viết bài Post này thì MongoDB bản Enterprise Server là 3.6.5 (https://www.mongodb.com/download-center?jmp=nav#enterprise) và MongoDB Compass(giao diện client để tương tác với MongoDB Server) là 1.1.1 (https://www.mongodb.com/download-center?jmp=nav#compass)

Trước khi bắt đầu cài đặt và sử dụng thì Tui muốn được giới thiệu sơ qua một chút ít về MongoDB (Các bạn có thể Google search 1 cái nó ra 1 nùi).

1. Giới thiệu MongoDB:

MongoDB là CSDL mã nguồn mở được viết bằng C++, là một trong những kiến trúc CSDL dùng để lưu trữ dữ liệu lớn (Big Data), hỗ trợ phân tán, dễ dàng co giãn mở rộng, tốc độ truy cập nhanh, không có ràng buộc mối quan hệ giữa các bảng.

Mỗi Server được gọi là 1 Cluster, 1 Cluster có nhiều Cơ sở dữ liệu, mỗi cơ sở dữ liệu có nhiều Collection (bảng), mỗi Collection có nhiều Document (dòng). Document là đối tượng Json, tùy biến theo người thiết kế.

Có thể dễ dàng truy suất từ C#, Java, Android, PHP, NodeJS…

2. Cách tải MongoDB enterprise Server và MongoDB Compass:

Chúng ta sẽ tiến hành tải MongoDB Enterprise Server và MongoDB Compass, Khi các bạn đọc post này thì có thể phiên bản đã khác rồi (đều này không quan trọng), Các bạn cứ tải bản mới nhất mà Mongo cho là OK.

-Để tải Enterprise server ta vào link: https://www.mongodb.com/download-center?jmp=nav#enterprise rồi chọn bản Windows (dĩ nhiên bạn là Linux thì chọn Linux, MAC thì chọn MAC). Trong các ví dụ này Tui hướng dẫn lập trình trên Windows.

Bản Release hiện tại là (tính tới ngày 27/05/2018) là 3.6.5, Platforms chọn Windows x64 rồi bấm nút Download tải về

Thường Mongo sẽ yêu cầu chúng ta cung cấp một số thông tin sau đó mới cho phép tải về:

Ta cung cấp thông tin đầy đủ rồi bấm submit, lúc này Mongo cung cấp giao diện như bên dưới:

Chọn msi để tải về.

Tương tự như vậy lặp lại bước tải cho MongoDB Compass:

Chọn version mới nhất rồi bấm Download tải về.

Cuối cùng ta sẽ có 2 file cài đặt như hình dưới đây trong máy của bạn:

3. Cách cài đặt MongoDB Enterprise Server và MongoDB Compass:

3.1 Để cài đặt Enterprise Server ta double click vào mongodb-win32-x86_64-enterprise-windows-64-3.6.5-signed.msi:

Bấm Next để tiếp tục:

Ở màn hình trên là các đồng ý về thỏa thuận sử dụng phần mềm của Mongo, ta đọc xong rồi check vào “I accept the terms in the License Agreement”, sau đó bấm Next:

Ta chọn Complete (có thể chọn Custom để thay đổi nơi lưu trữ, tuy nhiên không cần tỏ vẻ nguy hiểm chỗ này, cứ để mặc định vậy bấm Complete):

Lưu ý, trong màn hình cài đặt của bản 3.6.5 có một số bug nhỏ của Mongo, ta nhớ bỏ checked “Install MongoDB compass” đi nha (có thể version tiếp theo họ sẽ fix). Ta cài riêng từng bản (Server trước, rồi tới compass). Chọn Next để tiếp tục:

Bây giờ ta đã có thể sẵn sàng bắt đầu cài đặt bằng cách nhấn vào nút Install:

Chờ cho nó cài xong, tới khi nào có màn hình thông báo như dưới đầy là đã thành công:

3.2. Để cài đặt MongoDB Compass (công cụ cho ta tương tác và quản trị Mongo Server)

Ta double click vào “mongodb-compass-1.13.1-win32-x64.exe” để cài đặt, quá trình cài đặt rất đơn giản nên Tui không chụp hình ở đây. sau khi cài xong thì ta có giao diện chờ tương tác như dưới đây:

Mặc định host name là : localhost

port là : 27017

Như vậy ta đã cài đặt hoàn tất Enterprise Server và Compass.

Tuy nhiên ta vẫn chưa thể kết nối được (giờ kết nối sẽ báo lỗi ngay), vì còn bước tiếp theo là cấu hình Service và chạy Service cho MongoDB nữa, Tui sẽ trình bày chi tiết ở bài tiếp theo.

Các khóa học online khác, bạn có thể tham khảo tại đây:

https://unica.vn/?aff=11929

Chúc các bạn thành công