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!