Hướng dẫn mongodb-driver-core - mongodb-driver-core

Ở 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:

Hướng dẫn mongodb-driver-core - mongodb-driver-core
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:

//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");

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

mongodb://localhost:27017://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“);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.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.

//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();

Để 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:

//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;

}

Coding chi tiết:

-Phần XAML (MainWindow.xaml):

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

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);
}

}
}
}

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: http://communityuni.com/

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

Nhấp vào Tạo người dùng cơ sở dữ liệu để lưu người dùng.MongoDB Atlas

Sử dụng người dùng này để kết nối với triển khai cơ sở dữ liệu của bạn trong bước sau.Connect dialog for a database deployment provides the details to connect to a database deployment with an application using a MongoDB driver.

Ghi chú

Tùy chọn hiển thị nếu tính năng được bật

Atlas hiển thị các tùy chọn loại kết nối sau khi bạn bật IP riêng để nhìn, điểm cuối riêng hoặc cả hai. Nếu bạn chưa bật tính năng, không có nút hiển thị và loại kết nối nào mặc định theo tiêu chuẩn.MongoDB driver.

Quan trọng

Quan trọng

Khi bạn nâng cấp phiên bản trình điều khiển của mình, một số lệnh, phương thức hoặc tùy chọn có thể được không dùng nữa. Kiểm tra tài liệu API Driver MongoDB của bạn để đảm bảo chuyển đổi suôn sẻ.MongoDB driver API documentation to ensure a smooth transition.

Các ứng dụng chạy với trình điều khiển 4.0-series sẽ hoạt động với triển khai cơ sở dữ liệu MongoDB chạy MongoDB 4.4 miễn là:

  • Các trình điều khiển được đề xuất cho MongoDB 4.4 trong ma trận tương thích trình điều khiển được thử nghiệm với MongoDB 4.4. Kiểm tra trang tài liệu trình điều khiển MongoDB để biết ma trận tương thích trình điều khiển cho ngôn ngữ của bạn.MongoDB driver documentation page for the driver compatibility matrix for your language.

  • Không có chức năng nào mới đối với MongoDB 4.2 hoặc MongoDB 4.4 đang được sử dụng vàMongoDB 4.2, or MongoDB 4.4 is being used, and

  • Không có lệnh, phương thức hoặc tùy chọn nào bị xóa trong MongoDB 4.2 (bao gồm db.collection.geoNear(), db.collection.group()db.eval()) hoặc MongoDB 4.4 đang được sử dụng vàMongoDB 4.2 (including db.collection.geoNear(), db.collection.group(), and db.eval()), or MongoDB 4.4 are being used, and

  • Các thay đổi tương thích khác trong MongoDB 4.4 đến projections (bao gồm $slice projections), ____10,

    //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();
    
    
    1 và
    //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();
    
    
    2 không ảnh hưởng đến chúng.compatibility changes in MongoDB 4.4 to projections (including $slice projections),
    //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();
    
    
    0,
    //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();
    
    
    1, and
    //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();
    
    
    2 do not impact them.

Chúng tôi khuyên bạn nên sử dụng trình điều khiển sê-ri MongoDB 4.4 với MongoDB 4.4 để sử dụng các tính năng cơ sở dữ liệu mới hơn và chuẩn bị để nâng cấp phiên bản trong tương lai.

Khách hàng phải hỗ trợ TLS để kết nối với triển khai cơ sở dữ liệu ATLAS.TLS to connect to an Atlas database deployment.

Khách hàng phải hỗ trợ tiện ích mở rộng SNI TLS để kết nối với ATLAS

//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();

3 Cụm miễn phí hoặc cụm chia sẻ
//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();

4. Để xác minh rằng trình điều khiển MongoDB của bạn hỗ trợ tiện ích mở rộng SNITLS, hãy tham khảo phần tương thích trong tài liệu trình điều khiển của bạn. Nếu trình điều khiển tương thích với MongoDB 4.2 trở lên, nó sẽ hỗ trợ tiện ích mở rộng SNITLS.SNI TLS extension to connect to an Atlas
//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();

3 free cluster or
//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();

4 shared cluster. To verify that your MongoDB driver supports the SNI TLS extension, refer to the Compatibility section of your driver's documentation. If the driver is compatible with MongoDB 4.2 and later, it supports the SNI TLS extension.

Để truy cập triển khai cơ sở dữ liệu, bạn phải kết nối từ địa chỉ IP trên danh sách truy cập IP của dự án Atlas. Nếu bạn cần thêm địa chỉ IP vào danh sách truy cập IP, bạn có thể làm như vậy trong hộp thoại Connect. Bạn cũng có thể thêm địa chỉ IP từ tab truy cập mạng.Connect dialog. You can also add the IP address from the Network Access tab.

Để truy cập triển khai cơ sở dữ liệu, bạn phải tạo người dùng cơ sở dữ liệu có quyền truy cập vào (các) cơ sở dữ liệu mong muốn trên triển khai cơ sở dữ liệu ATLAS của bạn. Người dùng cơ sở dữ liệu tách biệt với người dùng Atlas. Người dùng cơ sở dữ liệu có quyền truy cập vào cơ sở dữ liệu MongoDB, trong khi người dùng Atlas có quyền truy cập vào chính ứng dụng ATLAS.database user with access to the desired database(s) on your Atlas database deployment. Database users are separate from Atlas users. Database users have access to MongoDB databases, while Atlas users have access to the Atlas application itself.

Bạn có thể tạo người dùng cơ sở dữ liệu để truy cập triển khai cơ sở dữ liệu ATLAS của mình trong hộp thoại Connect. Bạn cũng có thể thêm người dùng cơ sở dữ liệu từ chế độ xem triển khai cơ sở dữ liệu.Connect dialog. You can also add the database user from the Database Deployment view.

  1. Nhấp vào cơ sở dữ liệu ở góc trên cùng bên trái của Atlas.Databases in the top-left corner of Atlas.

  2. Trong chế độ xem triển khai cơ sở dữ liệu, bấm Kết nối để triển khai cơ sở dữ liệu mà bạn muốn kết nối.Database Deployments view, click Connect for the database deployment to which you want to connect.

Chọn Loại kết nối từ tập hợp các nút có sẵn. from the set of available buttons.

Ghi chú

Tùy chọn hiển thị nếu tính năng được bật

Atlas hiển thị các tùy chọn loại kết nối sau khi bạn bật IP riêng để nhìn, điểm cuối riêng hoặc cả hai. Nếu bạn chưa bật tính năng, không có nút hiển thị và loại kết nối nào mặc định theo tiêu chuẩn.Connection Type defaults to Standard.

Quan trọng

Bỏ qua bước này nếu Atlas chỉ ra trong bước bảo mật kết nối thiết lập mà bạn có ít nhất một người dùng cơ sở dữ liệu được cấu hình trong dự án của bạn. Để quản lý người dùng cơ sở dữ liệu hiện có, hãy xem Cấu hình người dùng cơ sở dữ liệu. if Atlas indicates in the Setup connection security step that you have at least one database user configured in your project. To manage existing database users, see Configure Database Users.

Để truy cập triển khai cơ sở dữ liệu, bạn cần người dùng MongoDB có quyền truy cập vào cơ sở dữ liệu hoặc cơ sở dữ liệu mong muốn trên triển khai cơ sở dữ liệu trong dự án của bạn. Nếu dự án của bạn không có người dùng MongoDB, Atlas sẽ nhắc bạn tạo một người dùng mới với vai trò quản trị viên Atlas.

  1. Nhập tên người dùng của người dùng mới.Username.

  2. Nhập mật khẩu cho người dùng mới này hoặc nhấp vào mật khẩu bảo mật tự động.Password for this new user or click Autogenerate Secure Password.

  3. Nhấp vào Tạo người dùng cơ sở dữ liệu để lưu người dùng.Create Database User to save the user.

Sử dụng người dùng này để kết nối với triển khai cơ sở dữ liệu của bạn trong bước sau.

Khi bạn đã thêm một địa chỉ IP vào danh sách truy cập IP của mình và thêm người dùng cơ sở dữ liệu, nhấp vào Chọn phương thức kết nối của bạn.Choose Your Connection Method.

Trong bước chọn Phương thức kết nối, chọn Kết nối ứng dụng của bạn.Choose a connection method step, select Connect your application.

Chọn trình điều khiển và phiên bản của bạn từ các menu thả xuống. Mẫu mã chứa một chuỗi kết nối hiển thị.

  • Thay thế

    //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();
    
    
    5 bằng mật khẩu được chỉ định khi bạn tạo người dùng cơ sở dữ liệu của mình.

  • Thay thế

    //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();
    
    
    6 bằng tên của cơ sở dữ liệu mà các kết nối sẽ sử dụng theo mặc định. Nếu bạn bỏ qua cơ sở dữ liệu, cơ sở dữ liệu
    //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();
    
    
    7 được sử dụng theo mặc định. Nếu bạn đã cấu hình người dùng trên cơ sở dữ liệu khác, hãy chỉ định cơ sở dữ liệu đó trong chuỗi kết nối.

Ghi chú

Tùy chọn hiển thị nếu tính năng được bật

Atlas hiển thị các tùy chọn loại kết nối sau khi bạn bật IP riêng để nhìn, điểm cuối riêng hoặc cả hai. Nếu bạn chưa bật tính năng, không có nút hiển thị và loại kết nối nào mặc định theo tiêu chuẩn.Driver Compatibility.

Quan trọngURI connection strings, the user

//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;

}

1 provides their password
//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;

}

2 to authenticate and connect to an Atlas database deployment.

Bỏ qua bước này nếu Atlas chỉ ra trong bước bảo mật kết nối thiết lập mà bạn có ít nhất một người dùng cơ sở dữ liệu được cấu hình trong dự án của bạn. Để quản lý người dùng cơ sở dữ liệu hiện có, hãy xem Cấu hình người dùng cơ sở dữ liệu.

Nếu bạn đang gặp phải các vấn đề kết nối với triển khai cơ sở dữ liệu của mình, hãy xem các vấn đề về kết nối khắc phục sự cố.

Mẹo

Xem thêm: