Lệnh Truy vấn Write trong MongoDB là một phần quan trọng của hệ thống quản lý cơ sở dữ liệu này, cho phép thực hiện các thao tác ghi dữ liệu vào cơ sở dữ liệu MongoDB. Tầm quan trọng của lệnh Truy vấn Write không thể bị xem nhẹ, bởi vì nó đóng vai trò quyết định trong việc quản lý dữ liệu và đảm bảo tính nhất quán của cơ sở dữ liệu.
Dưới đây là một số điểm quan trọng về tầm quan trọng của lệnh Truy vấn Write trong MongoDB:
- Lưu trữ và Cập Nhật Dữ Liệu: Lệnh Write cho phép lưu trữ dữ liệu mới vào MongoDB bằng cách thêm tài liệu vào collection. Nó cũng cho phép cập nhật dữ liệu hiện có thông qua các truy vấn cập nhật.
- Bảo Mật Dữ Liệu: Lệnh Write có vai trò quan trọng trong việc áp dụng các biện pháp bảo mật để đảm bảo rằng chỉ những người có quyền mới có thể thực hiện các thao tác ghi vào cơ sở dữ liệu.
- Khôi Phục Dữ Liệu: Trong trường hợp dữ liệu bị mất hoặc hỏng, lệnh Write giúp khôi phục dữ liệu từ các bản sao lưu hoặc log ghi lại dữ liệu trước đó.
- Quản Lý Chỉ Mục: Lệnh Write có thể tác động đến việc quản lý chỉ mục trong cơ sở dữ liệu, đảm bảo rằng các chỉ mục còn luôn được cập nhật và tối ưu.
- Xử Lý Giao Dịch: MongoDB hỗ trợ các giao dịch, và lệnh Write đóng vai trò quan trọng trong việc thực hiện và quản lý các giao dịch để đảm bảo tính nhất quán của dữ liệu trong các tình huống đa luồng.
Tóm lại, lệnh Truy vấn Write không chỉ giúp quản lý dữ liệu một cách hiệu quả mà còn đóng vai trò quan trọng trong việc đảm bảo tính bảo mật và nhất quán của cơ sở dữ liệu MongoDB. Điều này làm cho lệnh Truy vấn Write trở thành một phần không thể thiếu trong việc phát triển và duy trì ứng dụng sử dụng MongoDB.
Lệnh Insert trong MongoDB
Nó chèn một hoặc nhiều Document trong collection và cũng trả về một Document có chứa trạng thái của tất cả các đầu vào. Phương thức chèn sử dụng lệnh chèn bên trong, được cung cấp bởi MongoDB.
Cú pháp:
{ insert: <collection>, documents: [ <document>, <document>, <document>, ... ], ordered: <boolean>, writeConcern: { <write concern> }, bypassDocumentValidation: <boolean> }
Field | Type | Description |
insert | string | Đó là tên của tập hợp mà chúng ta muốn chèn phần tử vào. |
documents | array | Đây là một mảng tệp mà chúng tôi muốn chèn vào bộ sưu tập |
ordered | boolean | Nếu nó đặt thành true thì nó trả về kết quả mà không cần chèn bất kỳ Document còn lại nào được liệt kê trong mảng chèn khi thao tác chèn không thành công và ngược lại |
writeConcern | document | Đây là Document xác định mối quan tâm ghi của lệnh insert. |
bypass Document Validation | boolean | Chúng tôi có thể chèn Document không đáp ứng yêu cầu xác thực bằng cách sử dụng trường này. |
Ví dụ:
Hãy chèn một Document vào bộ sưu tập sách:
db.runCommand( { insert: "books", documents: [ { _id: 1, bookname: "MongoDB", status: "sold" } ] } )
Lệnh xóa MongoDB
Chúng tôi có thể xóa bất kỳ Document nào khỏi bộ sưu tập bằng lệnh xóa. Có nhiều đặc điểm kỹ thuật xóa trong một lệnh xóa duy nhất. Chúng tôi không thể sử dụng nó trên bộ sưu tập giới hạn. Lệnh xóa được sử dụng nội bộ bởi phương thức xóa, được cung cấp bởi MongoDB.
Cú pháp:
{ delete: <collection>, deletes: [ { q : <query>, limit : <integer>, collation: <document> }, { q : <query>, limit : <integer>, collation: <document> }, { q : <query>, limit : <integer>, collation: <document> }, ... ], ordered: <boolean>, writeConcern: { <write concern> } }
Field | Type | Description |
delete | string | Đây là tên của tập hợp đích mà chúng ta muốn xóa phần tử. |
deletes | array | Đây là một mảng các câu lệnh xóa mà chúng ta muốn thực hiện thao tác xóa. |
ordered | boolean | Nếu nó đặt thành true thì nó trả về kết quả mà không cần chèn bất kỳ Document còn lại nào được liệt kê trong mảng chèn khi thao tác chèn không thành công và ngược lại |
writeConcern | document | Đây là Document xác định mối quan tâm ghi của lệnh xóa. |
q | document | Đây là truy vấn phù hợp để xóa. |
limit | integer | Chúng tôi có thể giới hạn Document phù hợp để xóa bằng cách sử dụng trường này. Chỉ định 0 để xóa tất cả các Document phù hợp và ngược lại. |
collation | document | Nó là một trường tùy chọn và được sử dụng để xác định đối chiếu được sử dụng cho hoạt động. collation: { locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } |
Ví dụ:
Ví dụ sau đây xóa một Document khỏi bộ sưu tập sách có trạng thái bằng A bằng cách chỉ định giới hạn 2.
db.runCommand( { delete: "books", deletes: [ { q: { status: "A" }, limit: 1 } ] } )
Lệnh cập nhật MongoDB
Lệnh cập nhật thực hiện các thay đổi đối với Document trong một bộ sưu tập. Nó chứa nhiều câu lệnh cập nhật. Nó được sử dụng theo phương pháp cập nhật do trình điều khiển MongoDB cung cấp.
Cú pháp:
db.runCommand( { update: <collection>, updates: [ { q: <query>, u: <document or pipeline>, // Changed in MongoDB 4.2, upsert: <boolean>, multi: <boolean>, collation: <document>, arrayFilters: <array>, hint: <document|string> // Available starting in MongoDB 4.2 }, ... ], ordered: <boolean>, writeConcern: { <write concern> }, bypassDocumentValidation: <boolean> } )
Field | Type | Description |
update | string | Nó là tên của tập hợp đích mà chúng ta muốn cập nhật mảng. |
updates | array | Nó là mảng các câu lệnh cập nhật để thực hiện thao tác cập nhật trên tập hợp đã cho. |
ordered | boolean | Đây là trường tùy chọn nếu nó được đặt thành true. Nó sẽ trả về kết quả mà không cần thực hiện thao tác cập nhật còn lại và ngược lại. |
writeConcern | document | Đây là Document thể hiện mối quan tâm về việc ghi lệnh cập nhật. Nó mô tả mức độ xác nhận được yêu cầu từ MongoDB cho các hoạt động ghi vào MongoDB độc lập. |
bypass Document Validation | Nó cho phép thao tác cập nhật bỏ qua xác thực tài liệu. | Nó cho phép thao tác cập nhật bỏ qua xác thực Document. |
q | document | Đó là truy vấn phù hợp với các Document mà chúng tôi muốn cập nhật. |
u | document | Đây là Document lưu trữ các biểu thức toán tử cập nhật. |
upsert | boolean | Nếu trường này được đặt thành true, thì nó sẽ thực hiện thao tác chèn nếu không có Document nào khớp với truy vấn. |
multi | boolean | Trường này được đặt thành true; nó sẽ cập nhật tất cả các Document đáp ứng truy vấn. |
collation | document | Nó chỉ định các quy tắc ngôn ngữ cụ thể để so sánh chuỗi. collation: { locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } |
arrayfilters | array | Nó là một mảng Document mô tả phần tử mảng nào chúng ta muốn sửa đổi. |
hint | string/ document | Nó là một Document chỉ định chỉ mục để sử dụng để hỗ trợ vị từ truy vấn. |
Ví dụ:
Hãy tạo một bộ sưu tập của học sinh
Db.students.insertMany([ { _id: 1, student: "john", status: "Pending", points: 0, misc1: "note to self: confirm status", misc2: "Need to activate" }, { _id: 2, student: "Michael", status: "D", points: 59, misc1: "reminder: ping me at 100pts", misc2: "Some random comment" }, ])
Lệnh run sử dụng các toán tử $ set và $ inc để cập nhật trạng thái của tài liệu trong đó thành viên bằng “john”.
db.runCommand( { update: "students", updates: [ { q: { student: "john" }, u: { $set: { status: "A" }, $inc: { points: 1 } } } ], ordered: false, writeConcern: { w: "majority", wtimeout: 5000 } } )
Lệnh tìm MongoDB
Lệnh find được sử dụng để thực hiện một truy vấn và trả về nhóm kết quả đầu tiên và id của con trỏ mà từ đó chúng ta có thể tạo một con trỏ.
Cú pháp:
db.runCommand( { "find": <string>, "filter": <document>, "sort": <document>, "projection": <document>, "hint": <document or string>, "skip": <int>, "limit": <int>, "batchSize": <int>, "singleBatch": <bool>, "comment": <string>, "maxTimeMS": <int>, "readConcern": <document>, "max": <document>, "min": <document>, "returnKey": <bool>, "showRecordId": <bool>, "tailable": <bool>, "oplogReplay": <bool>, "noCursorTimeout": <bool>, "awaitData": <bool>, "allowPartialResults": <bool>, "collation": <document> } )
Field | Type | Description |
find | string | Trong trường này, chúng ta có thể xác định tên của tập hợp. |
filter | document | Nó lọc truy vấn. |
sort | document | Nó là một Document có chứa các chi tiết sắp xếp của truy vấn. |
projection | document | Đây là Document có chứa đặc tả phép chiếu để xác định trường nào sẽ bao gồm trong các Document trả về. |
hint | string | Đây là một Document chỉ định tên chỉ mục là chuỗi hoặc mẫu khóa chỉ mục. |
skip | positive integer | Chứa số lượng Document được bỏ qua. |
limit | Non-negative integer | Chúng tôi có thể đặt số lượng Document tối đa mà chúng tôi muốn trả về. |
batchSize | Non-negative integer | Nó chứa số lượng Document mà chúng tôi muốn trả lại trong đợt đầu tiên. |
singleBatch | boolean | Nó chứa thông tin chi tiết về việc có đóng con trỏ sau loạt kết quả đầu tiên hay không. |
maxTimeMS | +ve integer | Chúng ta có thể đặt giới hạn thời gian cho thao tác xử lý trên con trỏ. |
readConcern | document | Nó chỉ định mức độ quan tâm đã đọc. ReadConcern: {level: <value>} |
max | document | Nó chứa giới hạn trên cho chỉ mục nhất định. |
min | boolean | Nó chứa giới hạn dưới cho chỉ mục đã cho |
returnKey | boolean | Nếu đúng, chỉ trả về các khóa chỉ mục trong các Document kết quả. |
showRecordID | boolean | Nó được sử dụng để trả về định danh bản ghi cho mỗi Document. |
tailable | boolean | Nó trả về một con trỏ có thể điều chỉnh cho một bộ sưu tập có giới hạn. |
awaitData | boolean | Nó được sử dụng để tạm thời chặn lệnh getMore trên con trỏ. |
oplogReplay | boolean | Đây là một lệnh được sử dụng để phát lại oplog của một tập hợp bản sao. { find: “data”, oplogReplay: true, filter: { ts: { $gte: new Timestamp(1514764800, 0) } } } |
noCursorTimeout | boolean | Điều này được đệ trình để ngăn máy chủ hết thời gian chờ các con trỏ nhàn rỗi. |
allowPartialResults | boolean | Trường này ngăn việc tạo ra lỗi nếu một số phân đoạn không khả dụng. |
collation | document | Nó chỉ định đối chiếu cho các operations collation: { locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } |
Ví dụ:
Trong ví dụ dưới đây, lệnh sắp xếp các Document trong kết quả được đặt theo trường tên và giới hạn kết quả được đặt bởi sáu Document.
db.runCommand( { find: "restaurants", filter: { rating: { $gte: 9 }, cuisine: "American" }, projection: { name: 1, rating: 1, address: 1 }, sort: { name: 1 }, limit: 6 } )
Lệnh MongoDB findAndModify
Nó sửa đổi và trả về một Document tại một thời điểm. Document trả về không bao gồm sửa đổi được thực hiện trên bản cập nhật theo mặc định. Chúng tôi cần sử dụng tùy chọn mới để trả lại Document đã sửa đổi.
Cú pháp:
{ findAndModify: <collection-name>, query: <document>, sort: <document>, remove: <boolean>, update: <document or aggregation pipeline>, // Changed in MongoDB 4.2 new: <boolean>, fields: <document>, upsert: <boolean>, bypassDocumentValidation: <boolean>, writeConcern: <document>, collation: <document>, arrayFilters: <array> }
Field | Type | Description |
query | document | |
sort | document | |
remove | boolean | |
update | document/ array | |
new | boolean | |
fields | document | |
upsert | boolean | |
bypass Document Validation | boolean | |
writeConcern | document | |
maxTimeMS | integer | |
FindAndModify | String | |
collation | Trường đối chiếu cho phép người dùng chỉ định các quy tắc dành riêng cho ngôn ngữ để so sánh chuỗi. collation: { locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } | |
arrayFilters | array | |
db.runCommand( { findAndModify: "book", query: { name: "MongoDB" }, sort: { rating: 4 }, update: { $inc: { price: 1 } }, upsert: true } )