Trong thế giới của cơ sở dữ liệu NoSQL, MongoDB nổi bật như một giải pháp linh hoạt và mạnh mẽ, đặc biệt phù hợp với việc xử lý dữ liệu lớn và phức tạp. Để tận dụng tối đa khả năng của MongoDB, việc thiết lập và quản lý kết nối cơ sở dữ liệu là bước không thể bỏ qua. “Connection Methods” trong MongoDB cung cấp các phương thức để kết nối, tương tác và quản lý cơ sở dữ liệu một cách hiệu quả, từ đó giúp các nhà phát triển có thể linh hoạt thực hiện truy vấn, ghi dữ liệu và thực hiện nhiều tác vụ khác.
Bài viết này sẽ khám phá sâu vào các “Connection Methods” mà MongoDB hỗ trợ, bao gồm cách sử dụng chúng thông qua MongoDB Shell, các trình điều khiển cho ngôn ngữ lập trình phổ biến như Python, Java, Node.js, và các giao diện đồ họa như MongoDB Compass. Chúng tôi cũng sẽ đề cập đến các best practices khi thiết lập kết nối, như cách quản lý pool kết nối, cấu hình timeout, và bảo mật kết nối. Dù bạn đang xây dựng một ứng dụng mới từ đầu hay tối ưu hóa hệ thống hiện tại, hiểu rõ về “Connection Methods” sẽ giúp bạn tạo ra các ứng dụng MongoDB mạnh mẽ, ổn định và an toàn.
#1. connect (url, user, password)
Phương thức kết nối được sử dụng để thiết lập kết nối với các đối tượng MongoDB. Phương thức này cũng trả về tham chiếu đến cơ sở dữ liệu. Chúng ta có thể sử dụng cá thể Mongo () và phương thức getDB () của nó để thay thế trong một số trường hợp.
Ví dụ
db = connect ("localhost: 27017 / testDB")
Truy vấn trên sẽ trả về một tham chiếu đến testDB và khởi tạo một kết nối mới đến các đối tượng MongoDB đang chạy trên giao diện localhost và:
Xem thêm Lịch sử của Laravel
#2. Mongo(host, ClientSideFieldLevelEncryptionOptions)
Mongo là một phương thức khởi tạo JavaScript được sử dụng để tạo các phiên bản cho kết nối cơ sở dữ liệu thuộc về mongo shell hoặc đến một tệp JavaScript.
Ví dụ
Một đối tượng kết nối mới từ trình bao mongo sẽ được tạo bằng cách sử dụng truy vấn sau:
cluster = Mongo ("mongodb: //mymongo.example.net: 27017 /? replicaSet = myMongoCluster")
Để tương tác với cụm mymongo.example.net:27017, chúng tôi sẽ đưa ra truy vấn bên dưới đối với đối tượng cụm:
myDB = cluster.getDB("myDB"); myColl = myDB.getCollection("myColl");
Xem thêm Cập nhật phiên bản PHP
#3. Mongo.getDB(<database>)
Phương thức getDB được sử dụng để cung cấp quyền truy cập vào các đối tượng cơ sở dữ liệu thuộc về shell mongo hoặc tệp JavaScript.
Ví dụ
db = new Mongo (). getDB ("testDB");
Truy vấn trên thiết lập một kết nối mới đến các đối tượng MongoDB chạy trên giao diện localhost và trả về một tham chiếu đến “testDB”:
#4. Mongo.isCausalConsistency()
Như tên gợi ý của phương pháp này, tính nhất quán thông thường được sử dụng để trả về kết quả Boolean cho biết liệu tính nhất quán nhân quả của thể hiện có được kích hoạt trên đối tượng kết nối hay không.
var conn = Mongo("localhost:27017"); conn.isCausalConsistency()
Ví dụ
db.getMongo (). isCausalConsistency ();
Truy vấn trên xác định rằng tính nhất quán nhân quả có được bật trên đối tượng kết nối Mongo hay không, đối tượng này được liên kết với biến cơ sở dữ liệu toàn cầu của mongo shell:
Xem thêm Hướng dẫn cài đặt MongoDB
#5. Mongo.setCausalConsistency(<boolean>)
Phương thức setcasualconsistency () bật hoặc tắt tính nhất quán nhân quả trên đối tượng kết nối được chỉ định. Phương thức này loại bỏ kết nối của đối tượng theo mặc định.
Ví dụ
Truy vấn dưới đây cho phép tính nhất quán nhân quả trên các phiên bản của MongoDB được liên kết với biến cơ sở dữ liệu toàn cầu của mongo shell:
db.getMongo().setCausalConsistency();
Nếu bạn muốn kiểm tra tính nhất quán nhân quả có được kích hoạt hay không đối với kết nối. Bạn có thể sử dụng phương thức Mongo.isCausalConsistency ().
db.getMongo (). isCausalConsistency ();
#6. Mongo.setReadPref(mode, tagSet)
Phương thức setReadPref được sử dụng trên một đối tượng kết nối Mongo để kiểm soát phản ứng của tuyến khách đối với tất cả các truy vấn tới các thành viên của tập bản sao được chỉ định.
Các ví dụ
Chế độ ưu tiên đọc được sử dụng trong ví dụ sau để nhắm mục tiêu hoạt động đọc tới thành viên thứ cấp.
db.getMongo().setReadPref('secondary')
Đối với các thứ hai thẻ cụ thể sẽ bao gồm mảng tập hợp thẻ:
db.getMongo().setReadPref( "secondary", [ { "datacenter": "JTP" }, { "region": "North"}, { } ])
Xem thêm Session Commands trong MongoDB
#7. Mongo.startSession(<options>)
Phương thức bắt đầu phiên được sử dụng để bắt đầu một phiên cho kết nối. Id phiên sẽ được gán cho các lệnh được liên kết với phiên bằng mongo shell.
Các ví dụ
db = db.getMongo (). startSession ({retryWrites: true, causalConsistency: true}). getDatabase (db.getName ());
Để bắt đầu một phiên với tính năng ghi có thể kích hoạt lại được bật, bạn phải sử dụng truy vấn trên sẽ giúp bạn kích hoạt nó với tính nhất quán nhân quả.
#8. Mongo.watch(pipeline, options)
Phương thức watch cho phép chúng tôi mở một con trỏ dòng đã thay đổi cho tập hợp bản sao được chỉ định hoặc một cụm phân đoạn được chỉ định. Ngoại trừ cơ sở dữ liệu cục bộ, cấu hình và cơ sở dữ liệu quản trị, tập hợp bản sao sẽ được thay đổi để báo cáo về tất cả các tập hợp phi hệ thống của nó trên DB cụ thể,.
Ví dụ
Ví dụ truy vấn mở một con trỏ dòng thay đổi trên một tập hợp bản sao của mongoShell. Ngoại trừ cơ sở dữ liệu quản trị, cục bộ và cơ sở dữ liệu cấu hình, tất cả cơ sở dữ liệu sẽ được báo cáo về các thay đổi dữ liệu bằng con trỏ trả về cho tất cả các tập hợp không thuộc hệ thống.
watchCursor = db.getMongo (). watch ()
Chúng ta có thể sử dụng phương thức cursor.isExhausted () để lặp lại con trỏ nhằm kiểm tra các sự kiện mới và đảm bảo rằng vòng lặp chỉ thoát ra trong trường hợp có các thay đổi được thực hiện đối với con trỏ dòng.
while (!watchCursor.isExhausted()) { if (watchCursor.hasNext()){ printjson(watchCursor.next()); }}
#9. Session()
Phương thức phiên thiết lập đối tượng phiên cho kết nối trong mongo shell. Sử dụng Mongo.startSession () để thiết lập một phiên cho kết nối trong mongo shell,
Ví dụ
Một phiên trên đối tượng kết nối Mongo sẽ được bắt đầu được liên kết với biến cơ sở dữ liệu toàn cầu của mongo shell. Sau đó, để truy xuất đối tượng cơ sở dữ liệu được liên kết với phiên, nó sử dụng phương thức Session.getDatabase ().
var session = db.getMongo (). startSession (); db= session.getDatabase (db.getName ());