Ở 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:
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
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.
//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: //communityuni.com/
Chúc các bạn thành công!
Nội dung bài viết 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. Để hiểu được và có thể thao tác được, trước tiên tôi mong muốn về cơ bản, bạn phải hiểu MongoDB là gì? Và đương nhiên là phải có những thao tác trên Đầu tiên chính xác là bạn truy cập và Đến bước này thì việc duy nhất là bạn tìm tới file config mongodb Sau khi mở ra thì tìm đến line này:Video học lập trình mỗi ngày
LINUX
.Bài học này bạn được những gì?
MongoDB create user
ssh
, và tạo một user trên mongodb mà chúng ta đã nói đến ở
Mongodb create database and user terminal:> db.createUser[
{
user: "new_user",
pwd: "some_password",
roles: [ { role: "readWrite", db: "anonystick" } ]
}
]
Enable MongoDB Auth
/etc/mongod.conf
. Sau đó sửa file này như sau:sudo vim /etc/mongod.conf
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
bindIp
: chính là nơi chứa những ip address được cho
phép truy cập. Mặc định là chỉ có connect bằng localhost
.Đến đây không thể không nhắc đến vấn đề bảo mật trong mongodb, đó là mỗi lần config vui lòng backup mongodb sử dụng mongodump. Cẩn thận trên hết nhé các đồng chí.
Warning: Đừng có comment lại #bindIp
. 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.
Giờ bạn muốn thêm một Server A truy cập đến Server chứa MongoDB thì hãy làm như sau: Đầu tiên bạn phải làm là sử dụng lệnh:
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
Để làm gì? Để bạn có thể thấy được ip address đang xài là gì? Ở đây chính là dòng thứ 3 12.13.14.15
. Khi lấy được rồi bạn sửa lại file config trên như tôi đã nói :
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,12.13.14.15
Nghĩa là server khác sẽ truy cập và connect mongodb qua 12.13.14.15
này.
Restart mongo daemon [mongod]
Sau khi edit thành công thì đương nhiên phải reload lại mongo.
sudo service mongod restart
Sau đó check lệnh mongo
lên xem. Hoặc bạn có thể sử dụng
tail -f /var/log/mongodb/mongod.log
Để theo dõi log...
Kết nối mongodb từ xa Và sau cùng là ta lấy server A connect tới bằng nhiều cách như Connect mongodb Nodejs, nhưng ở đâu tôi dùng Sell cho nhanh:
mongo -u ian -p secretPassword 12.13.14.15/abc
MongoDB security
Ở đây 12.13.14.15
chính là ip mình đã config ở trên kia. Tới bước này rồi, có thể là tạm thời nói rằng bạn đã thành công. Nhưng còn một chuyện
đó là vấn đề bảo mật. Có ai đặt câu hỏi rằng, nếu như vậy thì tất cả có thể truy cập vào database từ xa, cho dù là ai? Đúng là như vậy, chính vì vậy một bước cuối cùng để MongoDB security
chính là phải cấu hình lại, ip address
nào được phép truy cập. Đó là việc điều chỉnh lại Firewall trong hệ thống. Bài viết này đã dài, cho nên tôi nghĩ sẽ để vấn đề này cho một bài viết khác có tên là "Adjusting the Firewall'.
Và đó là tất cả bài hướng dẫn của chủ đề ngày hôm nay. Xin chào!