Rate this post

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:

  1. 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.
  2. 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.
  3. 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 đó.
  4. 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.
  5. 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>  
}  
FieldTypeDescription
insertstringĐó là tên của tập hợp mà chúng ta muốn chèn phần tử vào.
documentsarrayĐây là một mảng tệp mà chúng tôi muốn chèn vào bộ sưu tập
orderedbooleanNế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
writeConcerndocumentĐây là Document xác định mối quan tâm ghi của lệnh insert.
bypass
Document
Validation
booleanChú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> }  
}  
FieldTypeDescription
deletestringĐây là tên của tập hợp đích mà chúng ta muốn xóa phần tử.
deletesarrayĐâ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.
orderedbooleanNế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
writeConcerndocumentĐây là Document xác định mối quan tâm ghi của lệnh xóa.
qdocumentĐây là truy vấn phù hợp để xóa.
limitintegerChú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.
collationdocumentNó 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>  
   }  
)  
FieldTypeDescription
updatestringNó là tên của tập hợp đích mà chúng ta muốn cập nhật mảng.
updatesarrayNó 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.
orderedbooleanĐâ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.
writeConcerndocumentĐâ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.
qdocumentĐó là truy vấn phù hợp với các Document mà chúng tôi muốn cập nhật.
udocumentĐây là Document lưu trữ các biểu thức toán tử cập nhật.
upsertbooleanNế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.
multibooleanTrườ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.
collationdocumentNó 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> }
arrayfiltersarrayNó là một mảng Document mô tả phần tử mảng nào chúng ta muốn sửa đổi.
hintstring/
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>  
   }  
)  
FieldTypeDescription
findstringTrong trường này, chúng ta có thể xác định tên của tập hợp.
filterdocumentNó lọc truy vấn.
sortdocumentNó là một Document có chứa các chi tiết sắp xếp của truy vấn.
projectiondocumentĐâ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ề.
hintstringĐây là một Document chỉ định tên chỉ mục là chuỗi hoặc mẫu khóa chỉ mục.
skippositive integerChứa số lượng Document được bỏ qua.
limitNon-negative integerChúng tôi có thể đặt số lượng Document tối đa mà chúng tôi muốn trả về.
batchSizeNon-negative integerNó chứa số lượng Document mà chúng tôi muốn trả lại trong đợt đầu tiên.
singleBatchbooleanNó 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 integerChúng ta có thể đặt giới hạn thời gian cho thao tác xử lý trên con trỏ.
readConcerndocumentNó chỉ định mức độ quan tâm đã đọc.
ReadConcern: {level: <value>}
maxdocumentNó chứa giới hạn trên cho chỉ mục nhất định.
minbooleanNó chứa giới hạn dưới cho chỉ mục đã cho
returnKeybooleanNếu đúng, chỉ trả về các khóa chỉ mục trong các Document kết quả.
showRecordIDbooleanNó được sử dụng để trả về định danh bản ghi cho mỗi Document.
tailablebooleanNó 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.
awaitDatabooleanNó được sử dụng để tạm thời chặn lệnh getMore trên con trỏ.
oplogReplaybooleanĐâ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) } } }
noCursorTimeoutbooleanĐ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.
allowPartialResultsbooleanTrườ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.
collationdocumentNó 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>  
}  
FieldTypeDescription
querydocument
sortdocument
removeboolean
updatedocument/ array
newboolean
fieldsdocument
upsertboolean
bypass
Document
Validation
boolean
writeConcerndocument
maxTimeMSinteger
FindAndModifyString
collationTrườ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> }
arrayFiltersarray
db.runCommand(  
  {  
    findAndModify: "book",  
    query: { name: "MongoDB" },  
    sort: { rating: 4 },  
    update: { $inc: { price: 1 } },  
    upsert: true  
  }  
)  

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now