hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
      • NodeJS
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
    • Git và Github
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • MongoDB
Các phương thức trong MongoDB Shell

Các phương thức trong MongoDB Shell

  • 11-05-2026
  • Toanngo92
  • 0 Comments

Mục lục

    • Mục tiêu học tập
  • 6.1 Giới thiệu về MongoDB Shell Methods
  • 6.2 Các phương thức Collection
  • • Count
      • Bảng 6.1: Tham số của phương thức countDocuments
  • • Distinct
      • Bảng 6.2: Tham số của phương thức distinct
  • • Find and Update
      • Bảng 6.3: Tham số của phương thức findOneAndUpdate
  • • Find and Replace
      • Bảng 6.4: Tham số của phương thức findOneAndReplace
  • • Find and Delete
    • Tiếp tục Table 6.5: Parameters for the findOneAndDelete Method
      • Bảng 6.5: Tham số của phương thức findOneAndDelete
  • 6.3 Các phương thức Database
  • • Create View
      • Bảng 6.6: Tham số của phương thức createView
  • • Get Collection Names
    • [ảnh minh họa]
  • • Check Connection
  • • Statistics
  • 6.4 Role Management Methods
  • Các phương thức quản lý Role
  • • Create Role
      • Bảng 6.7: Tham số của phương thức CreateRole
  • • Get Role
      • Bảng 6.8: Tham số của phương thức getRole
  • • Update Role
      • Bảng 6.9: Tham số của phương thức updateRole
  • • Drop Role
    • Bảng 6.10: Parameters of the dropRole Method
      • Bảng 6.10: Tham số của phương thức dropRole
  • 6.5 User Management Methods
  • Các phương thức quản lý User
  • • Create User
      • Bảng 6.11: Tham số của phương thức CreateUser
  • • Change User Password
      • Bảng 6.12: Tham số của phương thức changeUserPassword
  • • Get User
      • Bảng 6.13: Tham số của phương thức getUser
  • • Drop User
      • Bảng 6.14: Tham số của phương thức dropUser
  • 6.6 Bulk Operation Methods
  • Các phương thức Bulk Operation
  • • Ordered Bulk Operations
  • • Unordered Bulk Operations
  • • Single-Collection Bulk Operations
      • Bảng 6.15: Tham số của phương thức bulkWrite
  • • Multi-Collection Bulk Operations
      • Bảng 6.16: Tham số của phương thức adminCommand

Mục tiêu học tập

Trong session này, học viên sẽ học:

  • Liệt kê các phương thức MongoDB Shell khác nhau
  • Mô tả các collection methods trong MongoDB Shell
  • Giải thích các database methods khác nhau trong MongoDB Shell
  • Giải thích các role management methods trong MongoDB Shell
  • Mô tả các user management methods khác nhau trong MongoDB Shell

Như đã thảo luận ở session trước, MongoDB Shell là giao diện dòng lệnh cung cấp khả năng truy cập nhanh và dễ dàng đến cơ sở dữ liệu MongoDB. MongoDB Shell cung cấp nhiều collection methods để tạo, xoá, đổi tên và quản lý collection trong cơ sở dữ liệu. Nó cũng cung cấp database methods để tạo, chạy, xoá và lấy dữ liệu từ collection. Ngoài ra còn có role management methods và user management methods để tạo, cập nhật và xoá role cũng như user trong cơ sở dữ liệu. Session này sẽ cung cấp tổng quan về các phương thức MongoDB Shell khác nhau dùng để quản lý collection, user và role trong MongoDB.


6.1 Giới thiệu về MongoDB Shell Methods

MongoDB cung cấp tập hợp các phương thức hỗ trợ người dùng:

  • Tạo, chèn, cập nhật và xoá document, collection và database
  • Thay đổi cách query được thực thi
  • Quản lý user và xác thực
  • Cung cấp các role dựng sẵn và phân quyền dựa trên role
  • Thực hiện các thao tác bulk
  • Sao chép dữ liệu giữa nhiều MongoDB server
  • Phân phối dữ liệu của tập dữ liệu rất lớn trên nhiều máy

Một số phương thức quan trọng được MongoDB cung cấp gồm:

  • Collection Methods
  • Cursor Methods
  • Database Methods
  • User Management Methods
  • Role Management Methods
  • Query Plan Cache Methods
  • Bulk Operation Methods
  • Replication Methods
  • Sharding Methods
  • Connection Methods

6.2 Các phương thức Collection

MongoDB cung cấp nhiều collection methods để thực hiện các thao tác CRUD (Create, Read, Update, Delete) đã được đề cập ở các session trước.


• Count

MongoDB cung cấp phương thức countDocuments để đếm số lượng document trong collection.

Cú pháp của phương thức countDocuments là:

db.collection.countDocuments(query, options)

Bảng 6.1 mô tả các tham số của phương thức countDocuments.

ParameterFieldsTypeDescription
query–documentXác định điều kiện dùng để đếm document; nếu để trống thì toàn bộ document sẽ được đếm
options–documentCung cấp các trường tuỳ chọn
limitintegerXác định số lượng document tối đa cần đếm
skipintegerXác định số lượng document cần bỏ qua trước khi bắt đầu đếm
hintstring hoặc documentChỉ định tên index sẽ được sử dụng trong query
maxTimeMSintegerChỉ định thời gian tối đa mà query được phép chạy

Bảng 6.1: Tham số của phương thức countDocuments

Trong database sample_analytics, giả sử người dùng muốn biết tổng số document trong collection accounts. Để đếm số lượng document, người dùng có thể chạy query:

db.accounts.countDocuments({})

Kết quả của query được hiển thị trong Figure 6.1.


Người dùng muốn biết tổng số document trong collection accounts có trường limit lớn hơn 10000.

Để lấy số lượng yêu cầu, thực hiện query:

db.accounts.countDocuments({ limit: { $gte: 10000}})

Kết quả của query được hiển thị trong Figure 6.2.


• Distinct

MongoDB cung cấp phương thức distinct để lấy các giá trị duy nhất của một field trong collection.

Cú pháp của phương thức distinct là:

db.collection.distinct(field, query, options)

Bảng 6.2 mô tả các tham số của phương thức distinct.

ParameterFieldsTypeDescription
field–stringXác định field cần lấy các giá trị distinct
query–documentXác định điều kiện để lấy distinct values
optionscollationdocumentChỉ định các quy tắc ngôn ngữ như chữ hoa/chữ thường

Bảng 6.2: Tham số của phương thức distinct

Giả sử người dùng muốn lấy các giá trị distinct của field products trong document của collection accounts.

Để lấy kết quả mong muốn, thực hiện query:

db.accounts.distinct("products")

Kết quả của query được hiển thị trong Figure 6.3.


• Find and Update

MongoDB cung cấp phương thức findOneAndUpdate để tìm document và cập nhật các field dựa trên điều kiện được chỉ định.

Cú pháp của phương thức findOneAndUpdate là:

db.collection.findOneAndUpdate(filter, update, options)

Bảng 6.3 mô tả các tham số của phương thức findOneAndUpdate.

ParameterFieldsTypeDescription
filter–documentXác định điều kiện để document được cập nhật; nếu để trống thì document đầu tiên trong collection sẽ được cập nhật
update–documentXác định các cập nhật cần thực hiện
options–documentChỉ định các trường tuỳ chọn
projectiondocumentXác định các field cần trả về; nếu bỏ qua thì trả về tất cả field
sortdocumentXác định thứ tự sắp xếp các document phù hợp với filter
maxTimeMSnumberChỉ định thời gian tối đa (mili giây) mà query được phép chạy; vượt quá sẽ báo lỗi
upsertbooleanChuyển update thành thao tác insert nếu không tồn tại document phù hợp với filter
returnDocumentstringXác định trả về document gốc hay document sau cập nhật
returnNewDocumentbooleanNếu đặt true thì trả về document sau cập nhật
collationdocumentChỉ định quy tắc ngôn ngữ như chữ hoa/chữ thường
arrayFiltersarrayChỉ định điều kiện cho các phần tử trong mảng cần được cập nhật

Bảng 6.3: Tham số của phương thức findOneAndUpdate

Giả sử người dùng muốn tìm document trong collection accounts có giá trị trường account_id là 674364 và tăng giá trị trường limit thêm 500.

Để xem giá trị limit hiện tại trước khi cập nhật, thực hiện query:

db.accounts.find({ "account_id" : 674364 })

Kết quả của query được hiển thị trong Figure 6.4.

Giá trị của trường limit là 10000.

Để tăng giá trị trường limit thêm 500, thực hiện query:

db.accounts.findOneAndUpdate(
   { "account_id" : 674364 },
   { $inc : { "limit" : 500 } },
   { returnNewDocument:true }
)

Kết quả của query được hiển thị trong Figure 6.5.

Giá trị của trường limit được cập nhật thành 10500 trong document trả về. Ở đây, $inc là update operator và option returnNewDocument khi đặt là true sẽ đảm bảo document sau cập nhật được trả về.


• Find and Replace

MongoDB cung cấp phương thức findOneAndReplace để tìm document và thay thế document dựa trên điều kiện được chỉ định.

Cú pháp của phương thức findOneAndReplace là:

db.collection.findOneAndReplace(filter, replacement, options)

Bảng 6.4 mô tả các tham số của phương thức findOneAndReplace.

ParameterFieldsTypeDescription
filter–documentXác định điều kiện dùng để thay thế document; nếu để trống thì document đầu tiên trong collection sẽ được thay thế
replacement–documentChỉ định document thay thế; giá trị _id trong document thay thế phải giống với document được thay thế
options–documentChỉ định các trường tuỳ chọn
projectiondocumentXác định các field sẽ được trả về
ParameterFieldsTypeDescription
optionssortdocumentXác định thứ tự sắp xếp các document phù hợp với điều kiện filter
maxTimeMSnumberChỉ định thời gian tối đa (mili giây) mà query được phép chạy; nếu vượt quá sẽ phát sinh lỗi
upsertbooleanChèn document được chỉ định trong tham số replacement nếu đặt true và không có document nào phù hợp với điều kiện trong filter
returnDocumentstringXác định trả về document gốc hay document đã cập nhật
• Nếu đặt là before thì document gốc được trả về
• Nếu đặt là after thì document đã cập nhật được trả về
• Có độ ưu tiên cao hơn tham số returnNewDocument
returnNewDocumentbooleanLấy document đã thay thế nếu đặt true
collationdocumentChỉ định các quy tắc ngôn ngữ như phân biệt chữ hoa/chữ thường

Bảng 6.4: Tham số của phương thức findOneAndReplace


Giả sử người dùng muốn tìm tất cả document trong collection accounts mà trường limit lớn hơn 5000.

Trong document đầu tiên được trả về, người dùng muốn thay thế giá trị field products thành Commodity và field limit thành 2500.

Để xem toàn bộ document có giá trị limit lớn hơn 5000 trước khi thực hiện thao tác replace, người dùng có thể chạy query:

db.accounts.find({"limit":{$gte:5000}})

Kết quả của query được hiển thị trong Figure 6.6.


Trong document đầu tiên được trả về, giá trị field products là InvestmentStock và field limit là 10000.

Để thay thế giá trị field products thành Commodity và field limit thành 2500, người dùng có thể chạy query:

db.accounts.findOneAndReplace(
   { "limit" : { $gt : 5000 } },
   { "product" : "Commodity", "limit" : 2500 },
   { returnNewDocument:true }
)

Kết quả của query được hiển thị trong Figure 6.7.

Document đã được thay thế sẽ được trả về.


• Find and Delete

MongoDB cung cấp phương thức findOneAndDelete để tìm document và xoá document dựa trên điều kiện được chỉ định trong phương thức.

Cú pháp của phương thức findOneAndDelete là:

db.collection.findOneAndDelete(filter, options)

Bảng 6.5 mô tả các tham số của phương thức findOneAndDelete.

ParameterFieldsTypeDescription
filter–documentXác định điều kiện dùng để xoá document; nếu để trống thì document đầu tiên trong collection sẽ bị xoá

Tiếp tục Table 6.5: Parameters for the findOneAndDelete Method

ParameterFieldsTypeDescription
optionswriteConcerndocumentChỉ định write concern của document
projectiondocumentXác định các field sẽ được trả về
sortdocumentXác định thứ tự sắp xếp các document phù hợp với filter
maxTimeMSnumberChỉ định thời gian tối đa (mili giây) mà query được phép chạy; nếu vượt quá sẽ phát sinh lỗi
collationdocumentChỉ định các quy tắc ngôn ngữ như phân biệt chữ hoa/chữ thường

Bảng 6.5: Tham số của phương thức findOneAndDelete


Giả sử người dùng muốn tìm tất cả document mà field products có giá trị "Commodity" và các document trả về được sắp xếp tăng dần theo field limit.

Để xoá document đầu tiên được trả về, người dùng có thể chạy query:

db.accounts.findOneAndDelete(
   { "products" : "Commodity"},
   {sort: {"limit" : 1}}
)

Kết quả của query được hiển thị trong Figure 6.8.

Document đã xoá sẽ được trả về như là output của phương thức này.


6.3 Các phương thức Database

Các database methods do MongoDB cung cấp giúp tạo, chạy, xoá và lấy dữ liệu từ collection cũng như view trong database.

Một số database methods như:

  • db.dropDatabase
  • db.runCommand
  • db.createCollection
  • db.getSiblingDB

đã được đề cập ở các session trước.


• Create View

View là các thực thể chỉ đọc (read-only entities) được tạo từ collection hoặc các view khác trong cùng database.

View được tạo bằng cách chạy aggregation pipeline trên source collection hoặc source view.

MongoDB cung cấp phương thức để tạo view dựa trên collection hoặc view khác.

Cú pháp tạo view là:

db.createView(view, source, pipeline, collation)

(or)

db.createCollection(view, source, pipeline, collation)

Bảng 6.6 mô tả các tham số của phương thức createView.

ParameterTypeDescription
viewstringXác định tên của view sẽ được tạo
sourcestringXác định tên source collection hoặc view dùng để tạo view
pipelinearrayXác định mảng chứa các aggregation pipeline stages; không được chứa stage $out và $merge
collationdocumentChỉ định các quy tắc ngôn ngữ như phân biệt chữ hoa/chữ thường

Bảng 6.6: Tham số của phương thức createView


Giả sử người dùng muốn tạo view tên AccountsLimit5000 từ collection accounts trong database sample_analytics.

View này chỉ chứa các document có giá trị field limit bằng 5000.

Để tạo view này, người dùng có thể thực hiện query:

db.accounts.createView(
   "AccountsLimit5000",
   "accounts",
   [{ $match: { limit: 5000 }}]
)

Kết quả của query được hiển thị trong Figure 6.9.

Một view mới tên AccountsLimit5000 đã được tạo.

Để lấy document từ view này, người dùng có thể chạy query:

db.AccountsLimit5000.find()

Kết quả của query được hiển thị trong Figure 6.10.


• Get Collection Names

MongoDB cung cấp phương thức getCollectionNames để lấy tên của tất cả collection và view trong database.

Giả sử người dùng muốn lấy tên của tất cả collection và view trong database sample_analytics.

Để thực hiện tác vụ này, người dùng có thể chạy query:

db.getCollectionNames()

Kết quả của query được hiển thị trong Figure 6.11.

[ảnh minh họa]

  • Figure 6.12 → Figure 6.18 (ảnh output MongoDB Shell)

• Check Connection

MongoDB cung cấp phương thức getMongo để kiểm tra kết nối giữa mongosh và database instance.

Để kiểm tra kết nối, người dùng có thể thực hiện query:

db.getMongo()

Kết quả của query được hiển thị trong Figure 6.12.


• Statistics

MongoDB cung cấp phương thức stats để trả về trạng thái sử dụng của database.

Để lấy thống kê sử dụng của database, người dùng có thể thực hiện query:

db.stats()

Kết quả của query được hiển thị trong Figure 6.13.


6.4 Role Management Methods

Các phương thức quản lý Role

Các role management methods do MongoDB cung cấp giúp tạo, cập nhật và xoá role.

Các phương thức này cũng hỗ trợ người dùng cấp và thu hồi quyền (privileges) cho role.

Hãy cùng tìm hiểu một số role management methods trong MongoDB.


• Create Role

MongoDB cung cấp phương thức tạo role trong database nơi phương thức được thực thi.

Cú pháp tạo role là:

db.createRole(role, writeConcern)

Bảng 6.7 mô tả các tham số của phương thức createRole.

ParameterFieldTypeDescription
rolerolestringXác định tên của role sẽ được tạo
privilegesarrayXác định các quyền sẽ được cấp cho role; nếu để trống thì không có quyền nào được cấp
rolesarrayXác định mảng role mà role này sẽ kế thừa quyền; nếu để trống thì không kế thừa role nào
authenticationRestrictionsarrayXác định các giới hạn xác thực áp dụng cho role
writeConcern–documentXác định mức độ write concern

Bảng 6.7: Tham số của phương thức CreateRole


Giả sử người dùng muốn tạo một role mới tên mynewrole trên database sample_analytics từ database admin.

Để tạo role mới, người dùng có thể thực hiện query:

use admin

db.createRole({
   role: "mynewrole",
   privileges: [{
      resource: { db: "sample_analytics", collection: "accounts" },
      actions: ["update", "insert", "remove"]
   },
   {
      resource: { db: "", collection: "" },
      actions: ["find"]
   }],
   roles: [{ role: "readWrite", db: "sample_analytics" }]
},
{ w: "majority", wtimeout: 5000 })

Kết quả của query được hiển thị trong Figure 6.14.

Role mynewrole đã được tạo.


• Get Role

MongoDB cung cấp phương thức getRole để lấy các role mà quyền được kế thừa cho role này.

Cú pháp của phương thức này là:

db.getRole(rolename, arguments)

Bảng 6.8 mô tả các tham số của phương thức getRole.

ParameterFieldTypeDescription
rolename–stringXác định tên role
argumentsshowAuthenticationRestrictionsbooleanBao gồm địa chỉ IP mà người dùng của role này có thể kết nối tới database nếu đặt true
showBuiltinRolesbooleanBao gồm các built-in roles trong output nếu đặt true
showPrivilegesbooleanBao gồm direct privileges và inherited privileges từ role khác trong output nếu đặt true

Bảng 6.8: Tham số của phương thức getRole


Giả sử người dùng muốn lấy thông tin chi tiết của role mynewrole.

Để thực hiện tác vụ này, người dùng có thể chạy query:

db.getRole("mynewrole")

Kết quả của query được hiển thị trong Figure 6.15.


Giả sử người dùng muốn lấy role và privileges của role mynewrole.

Để thực hiện tác vụ này, người dùng có thể chạy query:

db.getRole("mynewrole", { showPrivileges: true })

Kết quả của query được hiển thị trong Figure 6.16.

Role và privileges liên kết với role mynewrole sẽ được hiển thị trong output.


• Update Role

MongoDB cung cấp phương thức updateRole để cập nhật privileges, roles và restrictions của user-defined role.

Cú pháp của phương thức này là:

db.updateRole(rolename, update, writeConcern)

Bảng 6.9 mô tả các tham số của phương thức updateRole.

ParameterFieldTypeDescription
rolename–stringXác định tên của role
updateprivilegesarrayXác định các quyền sẽ được cấp cho role; bắt buộc nếu không đề cập field roles
rolesarrayXác định các role mà role này kế thừa; bắt buộc nếu không đề cập field privileges
authenticationRestrictionsarrayXác định các giới hạn xác thực áp dụng trên role như địa chỉ IP mà user của role này có thể kết nối tới database

Bảng 6.9: Tham số của phương thức updateRole


Giả sử người dùng muốn cập nhật roles và privileges của role mynewrole.

Để thực hiện tác vụ này, người dùng có thể chạy query:

use admin

db.updateRole(
   "mynewrole",
   {
      privileges: [{
         resource: {
            db: "sample_analytics",
            collection: "accounts"
         },
         actions: [
            "update",
            "createCollection",
            "createIndex"
         ]
      }],
      roles: [{
         role: "read",
         db: "sample_analytics"
      }]
   },
   { w: "majority" }
)

Kết quả của query được hiển thị trong Figure 6.17.


Để xem role sau khi cập nhật, người dùng có thể thực hiện query:

db.getRole("mynewrole")

Kết quả của query được hiển thị trong Figure 6.18.

Có thể thấy role mynewrole đã được cập nhật.


• Drop Role

MongoDB cung cấp phương thức dropRole để xoá user-defined role khỏi database nơi role được tạo.

Cú pháp của phương thức này là:

db.dropRole(rolename, writeConcern)

Bảng 6.10: Parameters of the dropRole Method

ParameterFieldTypeDescription
rolerolestringXác định tên role sẽ bị xoá
writeConcern–documentXác định mức độ write concern

Bảng 6.10: Tham số của phương thức dropRole


Giả sử người dùng muốn xoá role mynewrole khỏi database admin.

Để xoá role, người dùng có thể thực hiện query:

db.dropRole("mynewrole", { w: "majority" })

Kết quả của query được hiển thị trong Figure 6.19.

Role mynewrole đã bị xoá.


6.5 User Management Methods

Các phương thức quản lý User

Các user management methods do MongoDB cung cấp hỗ trợ:

  • Tạo user
  • Gán role cho user
  • Đổi mật khẩu user
  • Xoá user

Bây giờ hãy tìm hiểu một số user management methods trong MongoDB.


• Create User

MongoDB cung cấp phương thức createUser để tạo user trong database nơi phương thức được thực thi.

Cú pháp tạo user là:

db.createUser(user, writeConcern)

Bảng 6.11 mô tả các tham số của phương thức createUser.

ParameterFieldTypeDescription
useruserstringXác định tên user sẽ được tạo
pwdstringXác định mật khẩu của user; có thể là chuỗi plaintext hoặc passwordPrompt để yêu cầu người dùng nhập mật khẩu
customDatadocumentChứa thông tin tuỳ chỉnh về user mà admin muốn lưu như employee ID hoặc họ tên đầy đủ của user
rolesarrayXác định các role được gán cho user
authenticationRestrictionarrayXác định các giới hạn xác thực áp dụng cho user
writeConcern–documentXác định mức độ write concern

Bảng 6.11: Tham số của phương thức CreateUser


Giả sử người dùng muốn tạo user tên user_account1 với các role readWrite và dbAdmin cho collection accounts trong database sample_analytics.

Để tạo user mới, người dùng có thể thực hiện query:

db.createUser({
   user: "user_account1",
   pwd: passwordPrompt(),
   roles: ["readWrite", "dbAdmin"]
})

Khi thực thi, query sẽ yêu cầu nhập mật khẩu.

Người dùng có thể nhập account1 làm mật khẩu.

Kết quả của query được hiển thị trong Figure 6.20.

User user_account1 đã được tạo.

Người dùng cũng có thể tạo user mà không cần chỉ định bất kỳ role nào.


• Change User Password

MongoDB cung cấp phương thức changeUserPassword để thay đổi mật khẩu của user được tạo trong database hiện tại.

Cú pháp của phương thức này là:

db.changeUserPassword(username, password)

Bảng 6.12 mô tả các tham số của phương thức changeUserPassword.

ParameterTypeDescription
usernamestringXác định tên user cần thay đổi mật khẩu
passwordstringXác định mật khẩu mới của user; có thể là chuỗi plaintext hoặc passwordPrompt để yêu cầu nhập mật khẩu

Bảng 6.12: Tham số của phương thức changeUserPassword


Giả sử người dùng muốn đổi mật khẩu cho user user_account1.

Để thay đổi mật khẩu, người dùng có thể thực hiện query:

db.changeUserPassword("user_account1", passwordPrompt())

Khi thực thi, query sẽ yêu cầu nhập mật khẩu.

Nhập user1 làm mật khẩu mới.

Kết quả của query được hiển thị trong Figure 6.21.

Mật khẩu của user user_account1 hiện đã được đổi thành user1.


• Get User

MongoDB cung cấp phương thức getUser để lấy thông tin user như:

  • mật khẩu
  • privileges
  • custom data của user

Cú pháp của phương thức này là:

db.getUser(username, args)

Bảng 6.13 mô tả các tham số của phương thức getUser.

ParameterFieldTypeDescription
username–stringXác định tên user cần lấy thông tin
argsshowCredentialsbooleanHiển thị mật khẩu của user nếu đặt true
showCustomerDatabooleanHiển thị dữ liệu custom của user nếu đặt true
showPrivilegesbooleanHiển thị toàn bộ privilege set của user nếu đặt true
showAuthenticationRestrictionsbooleanHiển thị các giới hạn xác thực của user như địa chỉ IP được phép kết nối tới database nếu đặt true

Bảng 6.13: Tham số của phương thức getUser


Giả sử người dùng muốn lấy thông tin chi tiết của user user_account1 trong database sample_analytics.

Để thực hiện tác vụ này, người dùng có thể chạy query:

db.getUser("user_account1")

Kết quả của query được hiển thị trong Figure 6.22.


• Drop User

MongoDB cung cấp phương thức dropUser để xoá user khỏi database.

Cú pháp của phương thức này là:

db.dropUser(username, writeConcern)

Bảng 6.14 mô tả các tham số của phương thức dropUser.

ParameterFieldTypeDescription
username–stringXác định tên user cần xoá
argsshowCredentialsbooleanHiển thị mật khẩu của user nếu đặt true
showCustomerDatabooleanHiển thị dữ liệu của user nếu đặt true
showPrivilegesbooleanHiển thị toàn bộ privilege set của user nếu đặt true
showAuthenticationRestrictionsbooleanHiển thị các giới hạn xác thực của user nếu đặt true

Bảng 6.14: Tham số của phương thức dropUser


Giả sử người dùng muốn xoá user user_account1 trong database sample_analytics.

Để thực hiện tác vụ này, người dùng có thể chạy query:

db.dropUser(
   "user_account1",
   {w: "majority", wtimeout: 5000}
)

Kết quả của query được hiển thị trong Figure 6.23.


6.6 Bulk Operation Methods

Các phương thức Bulk Operation

Bulk operations được thiết kế để thực thi nhiều thao tác ghi (insert, update và delete) trong một request duy nhất gửi tới server.

Điều này cải thiện hiệu suất bằng cách:

  • Giảm số lần network round-trip
  • Cho phép MongoDB tối ưu quá trình thực thi nội bộ

Các bulk operation methods trong MongoDB gồm:


• Ordered Bulk Operations

Trong MongoDB, ordered bulk operations được thực thi tuần tự theo đúng thứ tự đã định nghĩa và việc thực thi sẽ dừng ngay lập tức nếu xảy ra lỗi.

Chế độ này hữu ích khi các thao tác phía sau phụ thuộc vào thao tác trước đó, đảm bảo tính nhất quán và ngăn việc cập nhật một phần.


• Unordered Bulk Operations

Trong MongoDB, bulk operations có thể chạy ở unordered mode, nơi các thao tác được thực thi song song mà không đảm bảo thứ tự.

Lỗi trong một thao tác sẽ không làm dừng các thao tác khác.

Điều này giúp chế độ này hiệu quả cho các thao tác insert, update hoặc delete quy mô lớn khi có thể chấp nhận thất bại từng phần.

Mục tiêu là đạt throughput tối đa, giúp hiệu quả cho insert, update hoặc delete số lượng lớn.

Để thực hiện bulk operations, MongoDB có hai cách tiếp cận:

  • Single-Collection Bulk Operations
  • Multi-Collection Bulk Operations

• Single-Collection Bulk Operations

MongoDB sử dụng phương thức bulkWrite() cho Single-Collection Bulk Operations.

Cú pháp của phương thức này là:

db.collection.bulkWrite(
   [
      { <operation1> },
      { <operation2> },
      ...
   ],
   {
      ordered: <boolean>,
      writeConcern: <document>
   }
)

Bảng 6.15 mô tả các tham số của phương thức bulkWrite.

ParameterTypeDescription
OperationsarrayMảng các thao tác ghi sẽ được thực thi (ví dụ: insertOne, updateOne, updateMany, replaceOne, deleteOne, deleteMany)
OrderedbooleanXác định thứ tự thực thi. Nếu đặt true, các thao tác được thực hiện tuần tự và dừng tại lỗi đầu tiên. Nếu đặt false, các thao tác được thực thi song song và tiếp tục dù có lỗi. Giá trị mặc định là true
WriteConcerndocumentXác định mức acknowledgement mà MongoDB yêu cầu cho các thao tác (ví dụ { w: 1 }, { w: "majority" })

Bảng 6.15: Tham số của phương thức bulkWrite


Giả sử người dùng muốn thực hiện nhiều thao tác như insert, update và delete document trong collection users.

Để thực hiện tác vụ này trong một batch duy nhất, người dùng có thể chạy query:

db.users.bulkWrite([
   {
      insertOne: {
         document: {
            name: "Alice George",
            age: 30
         }
      }
   },
   {
      updateOne: {
         filter: { name: "Alice" },
         update: {
            $set: { age: 35 }
         }
      }
   },
   {
      deleteOne: {
         filter: { name: "Bob Turner" }
      }
   }
])

Kết quả của query được hiển thị trong Figure 6.24.


• Multi-Collection Bulk Operations

MongoDB sử dụng phương thức adminCommand() cho Multi-Collection Bulk Operations.

Cú pháp của phương thức này là:

db.adminCommand({
   bulkWrite: 1,
   ops: [ ... ],
   ordered: true/false
})

Bảng 6.16 mô tả các tham số của phương thức adminCommand.

ParameterTypeDescription
bulkWriteintegerPhải đặt bằng 1 để biểu thị việc thực thi bulk write command trên nhiều collection
opsArrayMảng các thao tác ghi. Mỗi thao tác phải bao gồm collection đích (insert, update, delete, …) cùng document/filter tương ứng
orderedbooleanNếu true, các thao tác sẽ được thực thi tuần tự và dừng ở lỗi đầu tiên. Nếu false, các thao tác chạy độc lập và tiếp tục ngay cả khi một số thao tác thất bại

Bảng 6.16: Tham số của phương thức adminCommand


Giả sử người dùng muốn chèn một user mới vào collection users và đồng thời cập nhật login statistics của họ trong collection loginStats.

Để thực hiện tác vụ này trong một batch duy nhất, người dùng có thể chạy query:

db.adminCommand({
   bulkWrite: 1,
   ops: [
      {
         insert: 0,
         document: {
            _id: 103,
            name: "Devid Miller"
         }
      },
      {
         update: 1,
         filter: {
            userId: 103
         },
         updateMods: {
            $inc: {
               loginCount: 1
            }
         }
      }
   ],
   nsInfo: [
      { ns: "testdb.users" },
      { ns: "testdb.loginStats" }
   ]
})

Kết quả của query được hiển thị trong Figure 6.25.

Bài viết liên quan:

Database Command trong MongoDB
Aggregation Pipeline – Các pipeline tổng hợp
Các toán tử trong MongoDB
Làm việc với cơ sở dữ liệu MongoDB
Giới thiệu mongoDB
Hướng dẫn cài đặt MongoDB trên môi trường windows, linux, macOS
Giới thiệu tổng quan và các khái niệm cơ bản về MongoDB

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Các phương thức trong MongoDB Shell

Database Command trong MongoDB

Tìm Hiểu Express.js và Lập Trình Đồng Bộ – Bất Đồng Bộ Trong Node.js

Làm việc với cơ sở dữ liệu MongoDB

Tìm hiểu Modules, Packages và Built-in Modules trong Node.js

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×